每天对随机 jpeg 进行 500,000 次 GET 请求 (Apache)

每天对随机 jpeg 进行 500,000 次 GET 请求 (Apache)

因此,我在本地一家公司的小型服务器上的 Apache 日志上获得了以下信息:

1.2.3.4 - - [09/Nov/2015:17:00:16 +0000] "GET /wp-content/uploads/2012/08/gold-coins.jpeg HTTP/1.1" 301 342

每天大约有 500,000 次,有 150,000 个唯一 IP。我已将该流量重定向到我的网站之外(因此是 301),因为它导致服务器崩溃。但它仍在使用一些带宽。补救这种情况的最佳方法是什么?

答案1

该问题称为图像热链接。

Nginx 可以通过多种方式配置来保护你免受攻击。请在此处阅读相关内容:

http://www.htpcbeginner.com/image-hotlink-protection-nginx/

http://nginxlibrary.com/hotlink-protection/

http://nodotcom.org/nginx-image-hotlink-rewrite.html

Nginx 热链接保护存在问题

正如您所说,大约 150K 个 IP 访问了 500K 次,这意味着每个 IP 大约访问了 3 次。考虑到这一点,您还可以在混合中添加此类静态 jpeg 文件的浏览器缓存,以避免 66% 的请求。从所谓的无 cookie 域提供静态文件可以节省另一部分。

另一个可以考虑的方法是禁止防火墙级别的 IP,例如借助 Fail2Ban。如果您在第一次下载该文件后禁止每个 IP,则可以节省 66% 的请求。由于它永远不会到达您的网络服务器,因此可以节省大量资源。但这并不能从源头上阻止它。

基于引荐来源的热链接保护是理想的,当您保留此类引荐来源列表时,您可以要求他们停止热链接,这样希望问题会在一段时间后消失。

答案2

在 Apache 中,你可以很容易地停止热链接:

https://wiki.apache.org/httpd/DisableImageHotLinking

相关内容