web-dev-qa-db-ja.com

エラーコードでプロキシリクエストを拒否するようにApacheを設定するにはどうすればよいですか?

主にwww.yandex.ruwww.baidu.comのようなサイトに対して、不要なプロキシ要求を頻繁に受け取るApacheを実行しているサーバーがあります。 mod_proxyがロードされていないため、これらのリクエストは実際には機能しません。しかし、何が起こるかというと、おそらくそれがデフォルトの仮想ホストであるために、返されるコンテンツが私のWebサイトのホームページに対応しているということです。重要なのは、明らかに私のWebサイトに実際には興味がない人に完全なインデックスページを送り返したくないということです。帯域幅とリソースの無駄だと思います。サーバーがプロキシとして機能していないことを通知し、アクセスログを調べたときに気分が良くなるように、HTTPエラーコード(おそらく400)で応答したいと思います;-)

プロキシリクエストのエラーコードを返すようにApacheを設定するための推奨される方法は何ですか? (「プロキシリクエスト」とは、HTTPリクエスト行に絶対URLを提供するものを意味します。)そして、これに最も適切なHTTPエラーコードはどれですか?

ちなみに、これはもう聞いていたのではないかと思いましたが、調べてみました。

2
David Z

すべてのリクエストを拒否するデフォルトの仮想ホストを設定するだけです。

<VirtualHost *:80>
  ServerName deny.all
  <Location />
    Order allow,deny
    Deny from all
  </Location>
</VirtualHost>

これが適切に行われると、明示的に構成されていない仮想ホストにアクセスするすべてのリクエストは、HTTPエラーコード403(「禁止」)で拒否されます。

また、詳細については、 プロキシの悪用 のApachewikiページも参照してください。上記のソリューションに加えて、mod_rewriteベースのソリューションのヒントも提供します。

2
earl