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

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

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

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

-p 1-1075:60 --status 200 -T 2000 -r california  

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

还不算坏,对不对? 但如果这是一个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如何配置Tomcat访问日志记录真实IP

搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程

LNMP 全功能编译安装 for CentOS 6.3笔记

CentOS 6.3 安装LNMP (PHP 5.4,MyySQL5.6)

在部署LNMP的时候遇到Nginx启动失败的2个问题

Ubuntu安装Nginx php5-fpm MySQL(LNMP环境搭建)

Nginx 的详细介绍请点这里
Nginx 的下载地址请点这里

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/9606e4d691c39bc6a66e93cfe963cc41.html