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.conf
にvhosts.d
ブロックを含めることができます。
メインのhttpd.conf
でDocumentRoot
を指定するだけです。
httpd.conf
で_default_
http://httpd.Apache.org/docs/2.2/vhosts/examples.html#default を使用してデフォルトの仮想ホストを指定するのはどうですか?<VirtualHost _default_:*>
の前にhttpd.conf
にInclude vhosts.d/*.conf
ブロックを含めることは、キャッチオールの最良の方法でしょうか?
<VirtualHost _default_:*>
を設定しても何も起こりません。<VirtualHost *:80>
として構成された仮想ホストよりも優先されません(80以外のポートを除く)。
_default_
は、IPベースの仮想ホスティングでのみ使用する必要があります。 ドキュメント から:
デフォルトの仮想ホストは、名前ベースの仮想ホストに使用されるアドレス/ポートに送信された要求を処理しません。
アルファベット順を乱用してデフォルトを設定するのが面倒な場合は、デフォルトの名前ベースの仮想ホストをメインのhttpd.conf
のInclude
行の前に配置しますか?
000aaadefault.confなどと呼ばれるvhosts.dに新しいvhostconfを作成することもできますが、それは少し厄介な感じがします。
ただし、これが実際には最善の方法です。設定との一貫性を保つ必要があるため、1つの<VirtualHost>
ブロックをhttpd.confに配置し、残りを別々のファイルに配置しないでください。デフォルトの仮想ホストの構成ファイルに!default.conf
という名前を付けてから、vhosts.d
に句読点で始まる名前の他のconfファイルがないことを確認してください。