Apache サーバーは IPv4 を受信しませんが、IPv6 では受信します。

Apache サーバーは IPv4 を受信しませんが、IPv6 では受信します。

RHEL Apacheサーバーの1つで奇妙な問題が発生しました。

実際には、リモートホストのポート80でリッスンしていません。ローカルに移動すると、http://localhostメインページが開きます。リッスンポートを確認すると、インターフェイスのみがリッスンしているnetstatことがわかります。アイテムがなく、そのアイテムがそこにあるはずです。例:tcp6:::80tcp

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

この問題について多くのフォーラムを検索してみましたが、提案された解決策のどれも効果がありませんでした。にhttpd.conf変更しましたが、リモートホストからアクセスするためにポート80を開いていません。 IPtablesは最初から無効になっています。Listen 80Listen 0.0.0.0:80Listen 127.0.0.0:80

IPv4を受信するようにサーバーをどのように設定しますか?

答え1

assiduus@localhost:~/httpd-2.4.34$ ./configure --help | grep IPv6
--enable-v4-mapped      Allow IPv6 sockets to handle IPv4 connections
assiduus@localhost:~/httpd-2.4.34$

この機能は、ソースからApache httpdをコンパイルするとデフォルトで有効になります。展開バイナリパッケージを使用した場合は、明らかにこのオプションが有効になります。

答え2

次の構成と同様のものを使用してください。

<VirtualHost *:80>
   ServerName www.domain.com
   ServerAlias domain.com

   DocumentRoot /path/to/your/webroot/
   ...

</VirtualHost>

これ」:80"を使用すると、Webサーバーはポート80のすべてのIPアドレスをリッスンできます。ただし、新しく作成された仮想ホストプロファイルが有効になり、Webサーバーが再起動されるまでは適用されません。

新しい仮想ホスト構成を有効にします。

a2ensite domain.com.conf

Webサーバーの再起動

service apache2 restart

Webサーバーがipv4とipv6の両方でリッスンしていることを確認するには、次の点を確認してください。

netstat -plunt |grep ":80"

これが役立つ場合は教えてください:)

関連情報