web-dev-qa-db-ja.com

Apacheエラー:ポート443での_default_仮想ホストのオーバーラップ

Apacheを起動しようとすると、このエラーが発生します。

ポート443での_default_仮想ホストのオーバーラップ

SSLをセットアップしようとしています。ほぼすべてのオンラインソリューションが次のように述べています。

NameVirtualHost *:443

confファイルに、Apacheはまだ起動に失敗し、ちょうど言う

アクションの開始に失敗しました。 Apacheログに詳細情報がある場合があります

Apacheログには情報がありません。

59
Mark

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にマッピングされている可能性のある他のサイト設定が有効になっているかどうかを確認します。

111

CentOSのVanilla Apache2インストールでは、mod_sslをインストールすると、次の場所に構成ファイルが自動的に追加されます。

{Apache_dir}/conf.d/ssl.conf

この構成ファイルには、default:443という名前のポート443のデフォルトの仮想ホスト定義が含まれています。 443の独自の仮想ホスト定義もある場合(つまり、httpd.confにある場合)、confictになります。 conf.dファイルが最初に含まれているため、それらはあなたのものに勝ちます。

競合を解決するには、conf.d/ssl.confから仮想ホスト定義を削除するか、独自の設定に更新します。

32
oarevalo

SSLを介して名前ベースの仮想ホストをサポートできる状況は限られているため、NameVirtualHost *:443の追加が適切なソリューションである可能性はほとんどありません。詳細については this および this をお読みください(より良いドキュメントがあるかもしれません。これらは私が見つけた問題の詳細を説明したものです)。

比較的標準のApache構成を実行している場合、おそらくどこかにこれがあります。

<VirtualHost _default_:443>

あなたの最善の策は次のいずれかです:

  • 追加のSSL構成をこの既存のVirtualHostコンテナーに配置するか、または
  • このVirtualHostブロック全体をコメントアウトして、新しいブロックを作成します。関連するすべてのSSLオプションを含めることを忘れないでください。
12
larsks

同じポートに複数のワイルドカードエントリがあったため、この問題に遭遇しました。これは、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つを単に削除することでした。

3
Mike