web-dev-qa-db-ja.com

Apache-IPではなく、特定のドメインでのみリッスンします

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>
9
Alex

ユーザーが自分の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>
25
Shane Madden

あなたは下位層に行く必要があります、それはREQUESTホストの検証チェックを持っているファイアウォールチェーンで私の頭に来るだけです&これはApacheで持っているものでこれはパッケージを無視またはドロップすることを可能にします

0
Chaddy

これを処理するクリーンな方法は、次のようにRewriteRuleを使用することです。

<If "%{HTTP_Host} == 'x.x.x.x'">
  RewriteRule ^.*$ http://www.example.com/$1 [L]
</If>
0
Chuck Replogle