Apacheを構成して、vhost名ではなくIPアドレス( http://xxx.xxx.xxx.xxx )への直接接続を拒否する方法 http:// example .com ?
私のVirtualHost構成:
ServerName example.com
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/
<Directory /var/www/>
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
ユーザーが自分のHTTPホストとして使用しようとしているホスト名(またはIP)は、クライアントが実際にHTTPリクエストを送信するまでサーバーに認識されないため、接続を拒否することはできません。 TCPリスナーは常にIPアドレスにバインドされます。
代わりに、HTTPエラー応答は受け入れられますか?
<VirtualHost *:80>
ServerName catchall
<Location />
Order allow,deny
Deny from all
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/
<Directory /var/www/>
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
あなたは下位層に行く必要があります、それはREQUESTホストの検証チェックを持っているファイアウォールチェーンで私の頭に来るだけです&これはApacheで持っているものでこれはパッケージを無視またはドロップすることを可能にします
これを処理するクリーンな方法は、次のようにRewriteRuleを使用することです。
<If "%{HTTP_Host} == 'x.x.x.x'">
RewriteRule ^.*$ http://www.example.com/$1 [L]
</If>