web-dev-qa-db-ja.com

NameVirtualHost *:443には、debian squeezeにVirtualHostsがありません

動作するApache 2.2サーバーがありますが、再起動時にNameVirtualHost *:443 has no VirtualHosts警告が表示されます。しかし、私はdo*:443に一致するVirtualHostsを持っています。

システムはDebian squeezeです。 ports.confファイルは次のようになります。

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
   NameVirtualHost *:443
   Listen 443
</IfModule>

Apache2ctlで-Sオプションを実行したときの出力は次のとおりです。

% /usr/sbin/Apache2ctl -S 
[Sat Mar 06 10:07:11 2013] [warn] NameVirtualHost *:443 has no VirtualHosts
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:443                  is a NameVirtualHost
         default server q2a-dev.example.org (/etc/Apache2/sites-enabled/q2a:1)
         port 443 namevhost q2a-dev.example.org (/etc/Apache2/sites-enabled/q2a:1)
         port 443 namevhost tcert-dev.example.org (/etc/Apache2/sites-enabled/tcert-dev:1)
*:80                   is a NameVirtualHost
         default server emailtest-dev.example.org (/etc/Apache2/sites-enabled/emailtest:1)
         port 80 namevhost emailtest-dev.example.org (/etc/Apache2/sites-enabled/emailtest:1)
Syntax OK

2つの仮想ホストは、/etc/Apache2/sites-enabledにあるファイルに定義されています。

# /etc/Apache2/sites-enabled/q2a
<VirtualHost *:443>
  DocumentRoot /usr/share/question2answer
  ServerName q2a-dev.example.org
  ServerAlias q2a-dev

  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/q2a-dev.pem
  SSLCertificateKeyFile /etc/ssl/private/q2a-dev.key

  DirectoryIndex index.php
</VirtualHost>

ここにもう一つあります:

# /etc/Apache2/sites-enabled/tcert-dev
<VirtualHost *:443>
  DocumentRoot /srv/www/tools
  ServerName tcert-dev.example.org
  ServerAlias tcert-dev

  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/tcert-dev.pem
  SSLCertificateKeyFile /etc/ssl/private/tcert-dev.key

  <Directory "/">
    AllowOverride None
  </Directory>
</VirtualHost>
3
user35042

問題が見つかりました。 Andrew BがPastebinに構成の詳細を投稿することを提案した後、すべてのファイルをより注意深く調べたところ、_NameVirtualHost *:443_ディレクティブが出現する場所が2つあることがわかりました:_ports.conf_に1つと、ディレクトリ_/etc/Apache2/conf.d_ Apacheの起動時にロードされるすべてのファイル。

インスタンスの1つを削除すると、警告は消えました。

NameVirtualHostは複数の仮想ホストに現れるアドレス/ポートの組み合わせに対して暗黙的であるため、この問題全体はApache 2.4ではなくなります。)

7
user35042

私もDebian Squeezeを使用しています。以下のports.confの外観をご覧ください。

コメントはデフォルトのファイルからのものです。NameVirtualHost *:443を追加したことに注意してください。

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.
    Listen 443
</IfModule>

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

注:NameVirtualHost *:443ports.confに保持する場合は、リンクを追加して、次のように443のデフォルトのVirtualHostを設定する必要があります。

ln -s /etc/Apache2/sites-available/default-ssl /etc/Apache2/sites-enabled/000-default-ssl

次に、/etc/Apache2/sites-enabled/q2aを追加して<Directory>...</Directory>を更新します(ここにいくつかのオプションを配置し、いくつかの例を追加してコードを完成させました)。

<VirtualHost *:443>
  DocumentRoot /usr/share/question2answer
  ServerName q2a-dev.example.org
  ServerAlias q2a-dev

  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/q2a-dev.pem
  SSLCertificateKeyFile /etc/ssl/private/q2a-dev.key

  <Directory /usr/share/question2answer>
    DirectoryIndex index.php

    # here you can also add some other options like:
    Options -Indexes FollowSymLinks MultiViews
    Order deny,allow
    Allow from all
    AllowOverride All
  </Directory>
</VirtualHost>

最後に、/etc/Apache2/sites-enabled/tcert-devのドキュメントルートを更新して<Directory>...</Directory>を変更します。

<VirtualHost *:443>
  DocumentRoot /srv/www/tools
  ServerName tcert-dev.example.org
  ServerAlias tcert-dev

  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/tcert-dev.pem
  SSLCertificateKeyFile /etc/ssl/private/tcert-dev.key

  <Directory /srv/www/tools>
    AllowOverride None
  </Directory>
</VirtualHost>

お役に立てば幸いです。

1
user163807