我有一台运行 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
基于 的解决方案的提示。