我在运行 WordPress 的 Nginx 服务器上托管了一个 JavaScript 文件。我删除了该文件,但仍然有来自多个引荐来源的多个请求。这些引荐来源来自不同的 URL 和 IP 地址。
有很多请求,我想阻止它们,因为它们似乎会影响我的服务器的性能。
有什么方法可以阻止这些请求吗?
答案1
我想象当您明确配置 nginx 时,您将获得性能提升,旧 javascript 的位置不再有效,因为 nginx 不再需要检查文件系统,并且当您发送 410 错误时它也不需要发送 404 错误页面:
location /path/to/script.js {
return 410 ;
}
HTTP 状态代码 410:已消失
请求的资源在服务器上不再可用,并且不知道转发地址。这种情况应被视为永久性的。具有链接编辑功能的客户端应在用户批准后删除对请求 URI 的引用。如果服务器不知道或无法确定该情况是否是永久性的,则应使用状态代码 404(未找到)。除非另有说明,否则此响应是可缓存的。
410 响应主要用于协助网站维护,通知接收者该资源是故意不可用的,并且服务器所有者希望删除指向该资源的远程链接。此类事件在限时、促销服务和不再在服务器站点工作的个人的资源中很常见。没有必要将所有永久不可用的资源标记为“消失”或保留该标记一段时间——这取决于服务器所有者的判断。
答案2
location = /deleted.js {
default_type text/plain;
return 410 "410";
#access_log off;
}
您可能想要禁用上述访问日志,或者,如果您正在运行一个足够新的 nginx,请配置access_log
进行缓冲。磁盘访问通常非常昂贵,并且很可能是导致速度变慢的原因。
顺便说一句,使用return
自动意味着log_not_found off;
,所以,它已经比简单地让 vfs 生成 404 更好了。
答案3
这是一个使用 iptable 的字符串模块来检查 http 头内容的想法,当然它必须适应你的特殊情况:http://spamcleaner.org/en/misc/w00tw00t.html
但是我不太确定检查所有传入数据包和让 Web 服务器处理它们哪个更快。我最终会在服务器配置中添加一行,立即在该特定 URL 上返回 404;随着网站管理员和搜索引擎纠正他们的链接(他们会纠正,因为 404 错误会导致在现代 Web 搜索引擎中排名不佳),流量会随着时间的推移而减少。