如何配置 Apache 以拒绝带有错误代码的代理请求?

如何配置 Apache 以拒绝带有错误代码的代理请求?

我有一台运行 Apache 的服务器,它经常收到不需要的代理请求,主要是针对www.yandex.ru或这样的网站www.baidu.com。我没有mod_proxy加载,所以这些请求实际上不起作用。但实际情况是,返回的内容对应于我的网站的主页,大概是因为那是默认虚拟主机。问题是,我不想将完整的索引页发回给显然对我的网站不感兴趣的人;我认为这是在浪费带宽和资源。我宁愿用 HTTP 错误代码(我想是 400)来响应,以表示我的服务器不能用作代理,同时也让我在检查访问日志时感觉更好 ;-)

建议如何配置 Apache 以返回代理请求的错误代码?(“代理请求”是指在 HTTP 请求行中提供绝对 URL 的请求。)哪种 HTTP 错误代码最适合这种情况?

顺便说一句,我以为这个问题已经被问过了,但我找了却没有找到。

答案1

您可以简单地配置一个拒绝所有请求的默认虚拟主机:

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

有了它,所有访问未明确配置的虚拟主机的请求都将被拒绝,并出现 HTTP 错误代码 403(“禁止”)。

另外,请务必查看 Apache Wiki 页面代理滥用了解更多详情。除了上述解决方案之外,他们还会为您提供mod_rewrite基于 的解决方案的提示。

相关内容