编辑nginx.conf配置文件
在http{}里面,加上这句:
然后,在server{}里面加上下面这段:
limit_conn one 1;
limit_rate 100k;
}
这里limit_conn one 1是指一个IP只能用一个线程下载。
limit_rate 100k是指最大只能下载100k。
怎么样?很方便吧?
如果你的站有文件给别人下载,比如一些比较大的视频文件等,如果下载的人过多,肯定会影响系统负载。做一些限制是有必要的。
因为有的人会直接在服务器上拖你的下载文件,不限制,有时下载速度会达到几兆/秒或者更多。
注意“location /”是指网站根目录,如果你只需要指定某文件夹下面的文件,可以写成“location /你的下载文件夹”。
记得修改完了,要重新启动下Nginx:
限制ip并发数
1.添加limit_zone 2.添加limit_conn 3.重启nginx |
nginx限速
nginx可以通过HTTPLimitZoneModule和HTTPCoreModule两个组件来对目录进行限速。
http {
limit_zone one $binary_remote_addr 10m;
server {
location /download/ {
limit_conn one 1;
limit_rate 300k;
}
}
}
limit_zone: 是针对每个IP定义一个存储session状态的容器.这个示例中定义了一个10m的容器,按照32bytes/session, 可以处理320000个session。
limit_conn one 1:限制每个IP只能发起一个并发连接。
limit_rate 300k: 对每个连接限速300k. 注意,这里是对连接限速,而不是对IP限速。如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate×2。
关于limit_rate和limit_conn: http://wiki.nginx.org/NginxHttpCoreModule
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
valid_referers none blocked server_names *.163.com 163.com baidu.com;
if ($invalid_referer) {return 403;}
expires 30d;
}
具体的可以参考这里:http://wiki.nginx.org//NginxHttpLimitZoneModule,同时还有一个第三的防盗链相关模块,ngx_http_accesskey_module:
location /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg "key";
accesskey_signature "mypass$remote_addr";
}
具体的使用方法:http://wiki.nginx.org//NginxHttpAccessKeyModule