apache2でデフォルトのVirtualHostを無効にする方法は?


10

apache2の設計では、不明なホストを含​​むすべてのhttpリクエストは、最初にロードされたVirtualHostに送信されます。この機能を無効にする方法はありますか?言い換えれば、ユーザーが明示的に名前が付けられたVirtualHost定義にのみアクセスできるWebサーバーが欲しいのです。ServerNameまたはServerAliasの行で明示的に言及されていない他のホスト名は、警告なしで無視されます。

これは可能ですか?

Listen 80
NameVirtualHost *

<VirtualHost _default_:*>
# Anything matching this host should be silently ignored.
</VirtualHost>

<VirtualHost *>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>

<VirtualHost *>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>

更新:以下および他の場所で提案されているように、静かに要求を無視することは良い考えではなく、おそらくHTTPのRFCを壊します。ただし、仮想ホストは複数の個別の物理HTTPサーバーをシミュレートするように設計されているため、サイレント無視のアプローチは不当に思えません。これは、IPベースの仮想ホスティングや一部のIPをファイアウォールで遮断することと同じです(おそらくすべてのクライアントに対してではない)。

回答:


4

「サイレントフェイル」が良い考えかどうかはわかりません。少なくとも何が起こったをクライアントに示す必要があります。おそらく、http 410の「存在しない」エラーを送信できます。このようなことがうまくいくはずです:

RewriteRule ^.*$ - [G]

さらに、空白のhtmlページである可能性があるカスタム410エラードキュメントを指定できるはずです。


私も自分でこの解決策を見つけました。mod_rewriteと "RewriteEngine On"をロードするための行を追加する必要があります。これらの行は必要ない場合があることに注意してください。彼らは私のためでした。:)
Harvey

2
「 - 」私たちはただ、もっと重要なのはゴーンまたは禁止と言っているので、また、防止置換を、正規表現は、はるかに簡単になりますRewriteRule . - [F]
ハーヴェイ

17

次に、書き換えルールを使用しない別の方法を示します。

<VirtualHost _default_:*>
    <Location />
        Deny from all
        Options None
        ErrorDocument 403 Forbidden.
    </Location>
</VirtualHost>

2
これは受け入れられる解決策です。+1
グレッグシュミット2017年

私はこの解決策を明確にしていません。いくつかのVHOSTファイルがありますが、これを使用して新しいファイルを作成するだけですか?私はそれを試してみました、そしてファイルに001.default.confと名前を付けましたが、まだ起こっている私のサブドメインのリダイレクトをしています。
Frantumn 2018年

@Frantumn質問で述べたように、「不明なホストを含​​むすべてのhttp要求は、最初にロードされたVirtualHostに送信されます」。<VirtualHost>したがって、この「デフォルト」は、サーバー構成で最初に定義する必要があります。正確にどのファイルが存在する必要があるかは、構成によって異なります。(ただし、「リダイレクトされたサブドメイン」の問題は無関係の問題である可能性があります。)
MrWhite

ええと。私のサーバーを指す他のドメインを使用すると、403は実行されません。サーバー名が一致しない場合でも、最初に見つかった
仮想

1

これは私のために働いた

<VirtualHost x.x.x.x:80 [x:x::x:x:x:x]:80>
  ServerName myactualservername.com
  ServerAlias *
  <Location />
    Deny from all
    Options None
    ErrorDocument 403 Forbidden.
  </Location>
</VirtualHost>

xxxxを実際のipv4およびipv6に置き換え、myactualservername.comをマシンが提供する実際のWebサイトに置き換えます


名前ベースの仮想ホストを使用しています。
このソリューションのクレジットはhttps://serverfault.com/a/82309/459796に移動し
ます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.