web-dev-qa-db-ja.com

ApacheサーバーはIPv4でリッスンせず、IPv6でリッスン

RHEL Apacheサーバーの1つで奇妙な問題に直面しています。

実際には、リモートホストからポート80でリッスンしていません。ローカルでhttp://localhostを参照すると、デフォルトのページが開いています。 netstatを使用してリスニングポートを確認したところ、tcp6インターフェースのみが:::80でリスニングしていることがわかりました。そして、tcpのエントリはなく、そのエントリは

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

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

IPv4でリッスンするようにサーバーを設定するにはどうすればよいですか?

1
amol
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をコンパイルするときにデフォルトで有効になります。配布バイナリパッケージを使用した場合、このオプションは有効になっているようです。

1
assiduus

この構成に似たものを使用します。

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

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

</VirtualHost>

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

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

a2ensite domain.com.conf

ウェブサーバーを再起動します

service Apache2 restart

Webサーバーがipv4とipv6の両方をリッスンしていることを確認するには、以下を確認します。

netstat -plunt |grep ":80"

これが役立つかどうか教えてください:)

0
Prince Adeyemi