设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

使用请求限制保护Nginx不被Flood攻击

2013-11-18 10:42| 发布者: joejoe0332| 查看: 3235| 评论: 0|原作者: 围观|来自: 开源中国社区

摘要: 我会简单的告诉你如何配置Nginx的限制请求模块并且它是如何保护你的网站,防止你被攻击与DDOS或是其他基于HTTP的拒绝服务攻击。这个测试中,我将样本页在保存在Blitz.io(现在是免费服务)命名为about.html,用于测试 ...

  测试


  我会简单的告诉你如何配置Nginx的限制请求模块并且它是如何保护你的网站,防止你被攻击与DDOS或是其他基于HTTP的拒绝服务攻击。


  这个测试中,我将样本页在保存在Blitz.io(现在是免费服务)命名为about.html,用于测试limit_req指令.


  首先,我在Blitz上使用下面的指令,用来发起1075个并发请求并且持续一分钟,响应超时设置为2分钟,区域为加州,同时设置了除掉状态200以外的其他状态全部为异常状态,甚至是503都被认为是没有成功.


-p 1-1075:60 --status 200 -T 2000 -r california http://kbeezie.com/about.html


  还不算坏,对不对? 但如果这是一个php文档. 很可能有用户会造成PHP进程的502/504状态,让服务器一直崩溃或无响应. 尤其是你使用了没有任何保护的VPS或者其他廉价服务器,故障率会更高。(原文广告,此处屏蔽)


  当然你可以使用缓存或其他工具来提高服务器性能与响应能力, 就比如你使用WordPress你肯定要使用wordpress caching plugin. da For those type of people we can use the limit request module.


  在Nginx中我们创建一个区域http { },我叫他blitz设置每秒5次请求, 最大容纳数据量为10MB.我使用$binary_remote_addr当作session变量 让你自己比$remote_addr的正常访客可以访问大于10MB的空间.

limit_req_zone $binary_remote_addr zone=blitz:10m rate=5r/s;


  然周在服务器中定义上这些规则:

location = /about.html {	limit_req zone=blitz nodelay;}


  然后重新载入Nginx配置,看一下效果:



  你会发现现在大于只有285人可以访问到服务器,每秒请求数为4.75 ,没有超过我们设置的5次每秒,检查日志你会发现没有访问到的请求都是HTTP 503,访问到的都是HTTP 200.


  使用这样的设置对于想限制地区访问是很有帮助的,它也可以应用在所有的php请求上.



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号