複数のVirtualHostを使用したApache2構成があります。私のDNSは、複数のドメインで*.<domain>.<tld>
を受け入れるように設定されています。すべてが正常に機能していますが、something-random-here.example.com
に移動すると、無効なVirtualHostが選択されているようです(最初または最後に見つかったものを推測しています)。ドメインまたはサブドメインに一致するVirtualHostエントリがない場合に、特定のルールを使用するようにApacheに指示する方法はありますか? 404を返品したいのですが。
名前が一致しない場合、Apacheは最初の仮想ホストを使用します。新しい仮想ホストをランダムな名前の最初の仮想ホストとして構成し、好きなものを表示するか、404ページを返します。
ワイルドカードには、サイト構成ファイルが含まれます。
Include path/to/site/confs/*httpd.conf
サイトのconfファイルを整理して、期待どおりの順序で読み込まれるようにします。例...
01-httpd.conf
02-site1-httpd.conf
03-site2-httpd.conf
等...
Apacheはこれらを順番に読み取ります。次に、デフォルトのサイトをロードする代わりに、常に最後にロードして一致しない仮想ホストをキャッチし、404を返すものを作成します。
99-catchall-httpd.conf
<VirtualHost *:8080>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
<VirtualHost *:8443>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
ポートは、httpdがリッスンするポートに必ず置き換えてください。または、特定のインターフェイスでhttpdをリッスンしている場合は、次のように、代わりに各インターフェイスにキャッチオールを追加する必要があります。
<VirtualHost 192.168.1.101:8080>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.101:8443>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.102:8080>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.102:8443>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
お役に立てれば。この方法を使用して、指定した順序でサイトをロードし、一致しない仮想ホストが予期しないサイトを意図せずにロードするのを防ぎます。
Moritz Both
が言及しているように、Apache2は、要求したものと一致しない場合、最初に検出した仮想ホストを使用します。
Apache2を最初にインストールしたとき、テンプレートとして使用したり、変更または削除したりできるデフォルトのWebサイトconfがあります。また、default.confもあるため、000-default.confが実際に何のためにあるのか常に疑問に思っていました。 Moritz Both
が言ったことを読んだ後、今ではすべてがより理にかなっています。
サーバーに対して行ったことは、デフォルトのホスト名(Webサイト)の構成を000-default.confファイルとa2ensite 000-default
にコピーすることでした。
これで、私のWebサイトに一致しないドメイン要求があるたびに、実際のデフォルトページのコピーである000-defaultページが提供されます。