web-dev-qa-db-ja.com

VirtualHostをipv6で動作させることはできません

Apacheが提供するWebサイトがあります。 IPv4では機能しますが、IPv6では機能しません。 500エラーがあります。

これが私のports.confファイルです:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/Apache2/sites-enabled/000-default.conf

Listen 80
NameVirtualHost *:80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

そして私のVHost:

<VirtualHost *:80 [::]:80>
DocumentRoot "/var/www/html/mysite.ca/www.mysite.ca"
ServerName mysite.ca
<Directory "/var/www/html/mysite.ca/www.mysite.ca">
allow from all
Options +Indexes
</Directory>
ServerAlias www.mysite.ca
</VirtualHost>

私がする時 netstat-tlnpt、私はこれを持っています:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      3577/master
tcp        0      0 0.0.0.0:453             0.0.0.0:*               LISTEN      4484/Perl
tcp        0      0 0.0.0.0:360             0.0.0.0:*               LISTEN      3254/sshd
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      3307/mysqld
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      2923/vsftpd
tcp6       0      0 ::1:25                  :::*                    LISTEN      3577/master
tcp6       0      0 :::443                  :::*                    LISTEN      7240/Apache2
tcp6       0      0 :::360                  :::*                    LISTEN      3254/sshd
tcp6       0      0 :::80                   :::*                    LISTEN      7240/Apache2

ApacheはすでにIPv6アドレスをリッスンしているようです。

追加しようとしました:

Listen [::]:80
Listen [::]:443

私のポートファイルに、しかし私がApacheを再起動するとこの結果があります:

(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:443

静的アドレスでワイルドカーを変更しようとしましたが、同じ問題が発生します。

同じサーバー上でIPv6で動作する他のWebサイトがあります。これが機能しない唯一のものです。

私に何ができる ?

3
Dougui

Apache2が完全にシャットダウンされていることを確認してください。おそらく、サービスを管理しているものはすべて、バックグラウンドで手動で起動されたコピーについて知りません。 (停止する必要があるときにnetstatを実行し、まだ何もリッスンしていないことを確認してください)

Apacheのバージョンによっては、NameVirtualHostも必要ない場合があります。 https://httpd.Apache.org/docs/current/upgrading.html を参照してください

500エラーが発生した場合は、ポートで何かが確実にリッスンして応答しています。これはerror.logに記録する必要があります。そうでない場合は、ログオプションを調整して含める必要があります。 Apache2.2と2.4のどちらを実行しているかを示すものは何も表示されず、ロギング構成が2つで異なります。

編集:LogLevelについてはこのページを参照してください https://httpd.Apache.org/docs/2.4/mod/core.html#loglevel

7
nijave

Listenonceperportper [〜#〜] ip [〜#〜]サーバーごとの完全な構成ごとに、文句を言わずに開始するまで、知っているものをコメントアウトしてください。ポート80/443でまだ開始されているかどうかを確認します

ipv6およびipv4、 必要なのは

listen 80
listen 443 https

find /etc/httpd/ | xargs grep -sniH "listen"

3
Jacob Evans

これはnetstatの出力に表示されます。

tcp6 0 0 ::: 443 ::: * LISTEN 3254/sshd

つまり、IPv6のポート443でリッスンしているsshプロセスがあり、実際にApacheはそのポートにバインドできません。

(98)アドレスはすでに使用されています:AH00072:make_sock:アドレスにバインドできませんでした[::]:443

1
Fredi