Nginx限制下载连接的设置

编辑nginx.conf配置文件

在http{}里面,加上这句:

limit_zone one $binary_remote_addr 10m;

然后,在server{}里面加上下面这段:

location / {
        limit_conn one 1;
        limit_rate 100k;
}

这里limit_conn one 1是指一个IP只能用一个线程下载。
limit_rate 100k是指最大只能下载100k。
怎么样?很方便吧?
如果你的站有文件给别人下载,比如一些比较大的视频文件等,如果下载的人过多,肯定会影响系统负载。做一些限制是有必要的。
因为有的人会直接在服务器上拖你的下载文件,不限制,有时下载速度会达到几兆/秒或者更多。

注意“location /”是指网站根目录,如果你只需要指定某文件夹下面的文件,可以写成“location /你的下载文件夹”。

记得修改完了,要重新启动下Nginx:

# /usr/local/nginx/sbin/nginx -h


--------------------------------------------------------------

限制ip并发数

 

1.添加limit_zone
这个变量只能在http使用
[[email protected]  ~]# vi /usr/local/nginx/conf/nginx.conf
limit_zone one $remote_addr 10m;

2.添加limit_conn
这个变量可以在http, server, location使用
[[email protected]  ~]# vi /usr/local/nginx/conf/nginx.conf
limit_conn   one 10;

3.重启nginx
killall -HUP 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。




------------------------------------------------------------------------------------------
对于nginx而言,本身也有简单的防盗链模块ngx_http_referer_module,配置比较简单,定义文件类型:

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

你可能感兴趣的:(nginx)