我进行了这项测试:
在我的" raspberry pi"我主持一个网站
然后当我加载网站时,我打开DevTools并输入以下代码:
setInterval(function(){
$.ajax({
success: function(result){
console.log(result);
}
});
},1);
这会每隔1 ms向同一页面发出一次请求
10秒后,我收到此错误" net :: ERR_INSUFFICIENT_RESOURCES"
在这种情况下," raspberry pi"我知道这是有限的,但是在webhost上大量请求的相同条件应该会使服务器减速。
我的问题是,在生产环境中,避免这种大规模请求注入的最佳做法是什么?
php(在我的情况下)应该处理这个请求吗? 是Apache吗? 防火墙?
感谢您的时间。
答案 0 :(得分:0)
net::ERR_INSUFFICIENT_RESOURCES
是Google Chrome错误,只是浏览器说它无法处理更多数据,可能是因为您有太多并行的AJAX调用。
在这种情况下,你的Raspberry Pi不是罪魁祸首,工作得很好,只是你的客户端代码需要一些优化,例如你可以等待之前的ajax调用成功再发送另一个。
我猜你的问题更多是关于“如何处理DOS攻击”,如果你想保护自己免受DOS攻击,最好的方法之一(在我看来)将是Fail2Ban(或任何等效的) ,它允许您使用Apache访问日志(或任何其他日志)来检测恶意请求。您可以将其设置为检测客户端何时发送过多请求,然后禁止它的IP。
有很多在线教程,我不会详细说明如何在这里使用
当你只有一个恶意客户端时,这是一个很好的方法,在DDOS(分布式DOS)的情况下,你可能需要处理来自世界各地的数千个不同的IP,在这种情况下,Fail2Ban就像是一个创可贴一个开放的伤口。 DDOS实际上很难对付,您可能需要为您处理外部服务(例如Cloudflare)
我希望我回答你的问题,祝你有个美好的一天