设为首页 收藏本站
查看: 1148|回复: 0

[经验分享] Nginx限制下载连接的设置

[复制链接]

尚未签到

发表于 2016-12-24 07:16:30 | 显示全部楼层 |阅读模式
  编辑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使用
[iyunv@10.10.90.97  ~]# vi /usr/local/nginx/conf/nginx.conf
limit_zone one $remote_addr 10m;
  2.添加limit_conn
这个变量可以在http, server, location使用
[iyunv@10.10.90.97  ~]# 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。

关于limit_zone:http://wiki.nginx.org/NginxHttpLimitZoneModule
关于limit_rate和limit_conn:http://wiki.nginx.org/NginxHttpCoreModule






------------------------------------------------------------------------------------------
对于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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-318514-1-1.html 上篇帖子: nginx优化(2) 下篇帖子: Nginx+php-cgi的配置方法介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表