Nginx 限制单个IP的并发连接数及对每个连接速度(限速)
使用Nginx限制单个IP的并发连接数能够减少一些采集程序或者DDOS的攻击。再lnmp的nginx配置中已经添加了部分代码,但是是注释掉的,可以编辑/usr/local/nginx/conf/nginx.conf 文件
1.1.8以上版本的nginx的设置:
查找:#limit_conn_zone $binary_remote_addr zone=perip:10m;,将前面的#去掉,没这一行的,话加上limit_conn_zone $binary_remote_addr zone=perip:10m;再在要设置限制连接数的虚拟主机配置里的server段里添加上limit_conn perip 10;10就是单个IP的最大并发连接数。limit_rate 100k;limit_rate为限速为 100KB/秒。
限制每个连接速度为100K,此限制是针对单个线程,比如,我用IE下载是100K,当用迅雷时它会占用2个线程,所以迅雷下载速度为200K,如果单个IP的并发数设置为10,则多线程下载的话速度可以达到100K×10。
另外还有limit_rate_after的参数,可以设置一个初始量,超量后将按limit_rate值限速。
如设置为
limit_rate_after 500k;
limit_rate 100k;每个连接预先不限制速度下载500KB,然后再限速100KB下载
最后/usr/local/nginx/sbin/nginx -t 测试配置是否有错误,如没有错误执行:
/usr/local/nginx/sbin/nginx -s reload 重载配置使其生效
####################################################
以下为旧版nginx下的设置:
查找:#limit_zoneoneip$binary_remote_addr10m;将前面的#去掉,没这一行的,话加上limit_zoneoneip$binary_remote_addr10m;,再在虚拟主机配置的server段里添加limit_conn oneip 20;limit_conn 语句最后面的数字为单个IP的最大并发连接数。
如果是非lnmp安装的也很简单,在nginx.conf里添加上limit_zone oneip $binary_remote_addr 10m;
limit_conn oneip 20;当然,limit_conn oneip 20; 语句也是可以添加到server 段里只针对某个虚拟主机做此限制。
限制直接在server段里限制并发数这一行下面加上limit_rate 100k;
限制每个连接速度为100K,此限制是针对单个线程,比如,我用IE下载是100K,当用迅雷时它会占用2个线程,所以迅雷下载速度为200K,如果单个IP的并发数设置为20,则多线程下载的话速度可以达到100K×20。
最后重启nginx即可。
学习了,收藏!谢谢李哥分享! 学习了 嘿嘿 学习了 limit_conn oneip 20; 这个添加到server段里面nginx启动不了
回复 4# 的帖子
部分付哦我信息,我没法说 针对某个虚拟主机server段里面要怎样写? LNAMPA也可以用你可以把改IP的并发数吗不行啊。
limit_zoneoneip$binary_remote_addr10m;去掉#号用不了。直接提示这一行错误,我的是nginx1.2.5
回复 8# 的帖子
你不说错误信息,我也没法说回复 1# 的帖子
LNAMPA 按照上面方法做 重启lnmpa 出现错误,请测试! 支持0.7版本吗?军歌 学习了!这个帖子不错!谢谢楼主
回复 1# 的帖子
我的Nginx.conf配置文件里是#limit_zone crawler $binary_remote_addr 10m
直接去掉#号吗?
还是把他改成#limit_zoneoneip$binary_remote_addr10m; 学习了,收藏!谢谢李哥分享!:lol
"limit_zone" directive is not allowed here
提示错误:root@debian:~# /etc/init.d/nginx restartRestarting nginx daemon: nginxnginx: "limit_zone" directive is not allowed here in /usr/local/nginx/conf/nginx.conf:11nginx already running.LNMP一键安装包最新版本1.0, 下面是nginx.conf前面的 配置代码:
userwww www;worker_processes 1;
error_log/home/wwwlogs/nginx_error.log
crit;pid
/usr/local/nginx/logs/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
limit_zone oneip $binary_remote_addr 10m;
events{use epoll;worker_connections 51200;}
页:
[1]
2