Apacheを起動しようとすると、このエラーが発生します。
ポート443での_default_仮想ホストのオーバーラップ
SSLをセットアップしようとしています。ほぼすべてのオンラインソリューションが次のように述べています。
NameVirtualHost *:443
confファイルに、Apacheはまだ起動に失敗し、ちょうど言う
アクションの開始に失敗しました。 Apacheログに詳細情報がある場合があります
Apacheログには情報がありません。
Debian/Ubuntuシステムで問題を解決するには、/etc/Apache2/ports.conf
を追加してNameVirtualHost *:443
設定ファイルを変更します。私のports.conf
は現時点では次のとおりです。
# /etc/Apache/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
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/Apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/Apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
NameVirtualHost *:443
Listen 443
</IfModule>
さらに、'sites-available/default-ssl'が有効になっていないことを確認し、a2dissite default-ssl
と入力してサイトを無効にします。この状態でa2dissite
を単独で入力してリストを取得し、ポート443にマッピングされている可能性のある他のサイト設定が有効になっているかどうかを確認します。
CentOSのVanilla Apache2インストールでは、mod_sslをインストールすると、次の場所に構成ファイルが自動的に追加されます。
{Apache_dir}/conf.d/ssl.conf
この構成ファイルには、default:443という名前のポート443のデフォルトの仮想ホスト定義が含まれています。 443の独自の仮想ホスト定義もある場合(つまり、httpd.confにある場合)、confictになります。 conf.dファイルが最初に含まれているため、それらはあなたのものに勝ちます。
競合を解決するには、conf.d/ssl.conf
から仮想ホスト定義を削除するか、独自の設定に更新します。
SSLを介して名前ベースの仮想ホストをサポートできる状況は限られているため、NameVirtualHost *:443
の追加が適切なソリューションである可能性はほとんどありません。詳細については this および this をお読みください(より良いドキュメントがあるかもしれません。これらは私が見つけた問題の詳細を説明したものです)。
比較的標準のApache構成を実行している場合、おそらくどこかにこれがあります。
<VirtualHost _default_:443>
あなたの最善の策は次のいずれかです:
VirtualHost
コンテナーに配置するか、またはVirtualHost
ブロック全体をコメントアウトして、新しいブロックを作成します。関連するすべてのSSLオプションを含めることを忘れないでください。同じポートに複数のワイルドカードエントリがあったため、この問題に遭遇しました。これは、Apache2ctl -S
を実行することで簡単に確認できます。
# Apache2ctl -S
[Wed Oct 22 18:02:18 2014] [warn] _default_ VirtualHost overlap on port 30000, the first has precedence
[Wed Oct 22 18:02:18 2014] [warn] _default_ VirtualHost overlap on port 20001, the first has precedence
VirtualHost configuration:
11.22.33.44:80 is a NameVirtualHost
default server xxx.com (/etc/Apache2/sites-enabled/xxx.com.conf:1)
port 80 namevhost xxx.com (/etc/Apache2/sites-enabled/xxx.com.conf:1)
[...]
11.22.33.44:443 is a NameVirtualHost
default server yyy.com (/etc/Apache2/sites-enabled/yyy.com.conf:37)
port 443 namevhost yyy.com (/etc/Apache2/sites-enabled/yyy.com.conf:37)
wildcard NameVirtualHosts and _default_ servers:
*:80 hostname.com (/etc/Apache2/sites-enabled/000-default:1)
*:20001 hostname.com (/etc/Apache2/sites-enabled/000-default:33)
*:30000 hostname.com (/etc/Apache2/sites-enabled/000-default:57)
_default_:443 hostname.com (/etc/Apache2/sites-enabled/default-ssl:2)
*:20001 hostname.com (/etc/Apache2/sites-enabled/default-ssl:163)
*:30000 hostname.com (/etc/Apache2/sites-enabled/default-ssl:178)
Syntax OK
出力の先頭に、いくつかの警告行があることに注意してください。これらは、どのポートが問題を引き起こしているのかを示します(ただし、おそらく既にそれを知っています)。
次に、出力の最後を見ると、問題を引き起こしている仮想ホストが定義されているファイルと行を正確に確認できます。上記の例では、ポート20001は、33行目の/etc/Apache2/sites-enabled/000-default
と163行目の/etc/Apache2/sites-enabled/default-ssl
の両方に割り当てられています。同様に、*:30000
は2箇所にリストされています。解決策(私の場合)は、エントリの1つを単に削除することでした。