web-dev-qa-db-ja.com

Apache2のデフォルトの仮想ホストをアルファベット順に並べるか、_default_仮想ホストでオーバーライドしますか?

Apache Webサーバー(CentOS 5、Apache 2.2.3)に複数の名前付きvhostがあります。
各vhostには/etc/httpd/vhosts.dに独自の構成ファイルがあり、これらのvhost構成ファイルはメインのhttpdconfから...Include vhosts.d/*.confに含まれています。

これは、仮想ホストのconfの1つの例です...

NameVirtualHost *:80
<VirtualHost *:80>
        ServerName www.domain.biz
        ServerAlias domain.biz www.domain.biz
        DocumentRoot /var/www/www.domain.biz
        <Directory /var/www/www.domain.biz>
                Options +FollowSymLinks
                Order Allow,Deny
                Allow from all
        </Directory>
        CustomLog /var/log/httpd/www.domain.biz_access.log combined
        ErrorLog /var/log/httpd/www.domain.biz_error.log
</VirtualHost>

これで、パブリックIPアドレスを使用してサーバーに直接アクセスしようとすると、集約された構成で指定された最初の仮想ホストを取得します(したがって、私の場合はvhosts.dディレクトリからアルファベット順になります)。 IPアドレスで直接サーバーにアクセスする人は誰でも、403または404を取得してほしいです。

デフォルト/キャッチオール仮想ホストを設定するいくつかの方法といくつかの矛盾する意見を発見しました。

  • 000aaadefault.confなどと呼ばれるvhosts.dに新しいvhostconfを作成することもできますが、それは少し厄介な感じがします。

  • <VirtualHost>ディレクトリが含まれる前に、メインのhttpd.confvhosts.dブロックを含めることができます。

  • メインのhttpd.confDocumentRootを指定するだけです。

httpd.conf_default_http://httpd.Apache.org/docs/2.2/vhosts/examples.html#default を使用してデフォルトの仮想ホストを指定するのはどうですか?
<VirtualHost _default_:*>の前にhttpd.confInclude vhosts.d/*.confブロックを含めることは、キャッチオールの最良の方法でしょうか?

1
batfastad

<VirtualHost _default_:*>を設定しても何も起こりません。<VirtualHost *:80>として構成された仮想ホストよりも優先されません(80以外のポートを除く)。

_default_は、IPベースの仮想ホスティングでのみ使用する必要があります。 ドキュメント から:

デフォルトの仮想ホストは、名前ベースの仮想ホストに使用されるアドレス/ポートに送信された要求を処理しません。

アルファベット順を乱用してデフォルトを設定するのが面倒な場合は、デフォルトの名前ベースの仮想ホストをメインのhttpd.confInclude行の前に配置しますか?

2
Shane Madden

000aaadefault.confなどと呼ばれるvhosts.dに新しいvhostconfを作成することもできますが、それは少し厄介な感じがします。

ただし、これが実際には最善の方法です。設定との一貫性を保つ必要があるため、1つの<VirtualHost>ブロックをhttpd.confに配置し、残りを別々のファイルに配置しないでください。デフォルトの仮想ホストの構成ファイルに!default.confという名前を付けてから、vhosts.dに句読点で始まる名前の他のconfファイルがないことを確認してください。

1
1.618