web-dev-qa-db-ja.com

Apacheの一致しないドメイン/サブドメインのデフォルトの処理

複数のVirtualHostを使用したApache2構成があります。私のDNSは、複数のドメインで*.<domain>.<tld>を受け入れるように設定されています。すべてが正常に機能していますが、something-random-here.example.comに移動すると、無効なVirtualHostが選択されているようです(最初または最後に見つかったものを推測しています)。ドメインまたはサブドメインに一致するVirtualHostエントリがない場合に、特定のルールを使用するようにApacheに指示する方法はありますか? 404を返品したいのですが。

12
Ryall

名前が一致しない場合、Apacheは最初の仮想ホストを使用します。新しい仮想ホストをランダムな名前の最初の仮想ホストとして構成し、好きなものを表示するか、404ページを返します。

12
Moritz Both

ワイルドカードには、サイト構成ファイルが含まれます。

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>

お役に立てれば。この方法を使用して、指定した順序でサイトをロードし、一致しない仮想ホストが予期しないサイトを意図せずにロードするのを防ぎます。

4
Jason Slobotski

Moritz Bothが言及しているように、Apache2は、要求したものと一致しない場合、最初に検出した仮想ホストを使用します。

Apache2を最初にインストールしたとき、テンプレートとして使用したり、変更または削除したりできるデフォルトのWebサイトconfがあります。また、default.confもあるため、000-default.confが実際に何のためにあるのか常に疑問に思っていました。 Moritz Bothが言ったことを読んだ後、今ではすべてがより理にかなっています。

サーバーに対して行ったことは、デフォルトのホスト名(Webサイト)の構成を000-default.confファイルとa2ensite 000-defaultにコピーすることでした。

これで、私のWebサイトに一致しないドメイン要求があるたびに、実際のデフォルトページのコピーである000-defaultページが提供されます。

0