Nginx-限制汇总

http块

limit_conn_zone $binary_remote_addr zone=connperip:10m;
limit_conn_zone $server_name zone=connperserver:10m;

limit_req_zone $binary_remote_addr zone=reqperip:10m;
limit_req_zone $server_name zone=reqperserver:10m;limit_req_zone $http_x_forwarded_for zone=qps2:10m rate=2r/s;limit_req_zone $http_x_forwarded_for zone=qps3:10m rate=3r/s;

  要限制连接,必须先有一个容器对连接进行计数,在http段加入如下代码:"zone=" 给它一个名字,可以随便叫,这个名字要跟后面的 limit_conn 一致,$binary_remote_addr, 用二进制来储存客户端的地址,1m 可以储存 32000 个并发会话,也可以用其他 Nginx 变量。

  限制请求数同限制连结束,但是后面 rate=2r/s,即漏桶原理,表示每秒只处理 2 个连接。定义一个漏桶,滴落速率 2 req/sec,桶空间10m,10M能保持大约160000个(IP)状态。

server块

limit_conn perip 8; #每个IP最大连接数为8
limit_req zone=qps2 burst=5 nodelay; #速率qps=2,峰值burst=5,不延迟请求,直接处理请求或者返回503
limit_req zone=qps2 burst=5; #速率qps=2,峰值burst=5,延迟请求,严格按照漏桶速率qps=1处理每秒请求,在峰值burst=5以内的并发请求,会被挂起,延迟处理,超出请求数限制则直接返回503,客户端只要控制并发在峰值[burst]内,就不会触limit_req_error_loglimit_rate 100k; #是对每个连接限速100k。这里是对连接限速,而不是对IP限速!如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate * 2

白名单

  文件: nginx/conf/limit/whiteip.conf

127.0.0.1 0;        #白名单: 127.0.0.1
172.16.0.0/16 0;    #白名单 172.16.0.0 ~ 172.16.255.255
192.168.0.0/24 0;   #白名单 192.168.0.0 ~ 192.168.0.255

  文件 nginx/conf/limit/limit_zone.conf

geo $whiteiplist  {
    default 1;
    include limit/whiteip.conf;
}

map $whiteiplist  $limit {
    1 $binary_remote_addr;
    0 "";
}

limit_req_zone $limit zone=perreq:10m rate=8r/s;     #除了白名单外的IP每秒最多处理 8 个请求
limit_conn_zone $limit zone=perip:10m;   

a

时间: 2024-10-26 19:24:41

Nginx-限制汇总的相关文章

Nginx 错误汇总

1. Upstream timed out (110: Connection timed out) while reading response header from upstream 这种情况主要在下面两种情况下发生: a. Nginx 作为 proxy,需要适当的调整 proxy timeout 的值. location / { ... proxy_connect_timeout 70; proxy_read_timeout 150; proxy_send_timeout 150; ...

Nginx问题汇总

上传文件大小限制: 可以选择在http{ }中设置:client_max_body_size   20m; 也可以选择在server{ }中设置:client_max_body_size   20m; 还可以选择在location{ }中设置:client_max_body_size   20m; 三者到区别是:http{} 中控制着所有nginx收到的请求.而报文大小限制设置在server{}中,则控制该server收到的请求报文大小,同理,如果配置在location中,则报文大小限制,只对匹

Web前端必备-Nginx知识汇总

一.Nginx简介 Nginx是一个高性能.轻量级的Web和反向代理服务器, 其特点是占有内存及资源少.抗并发能力强. Nginx安装简单.配置简洁.启动快速便捷.支持热部署.支持 SSL.拥有高度模块化的设计. Nginx的主要功能有: Web服务器 反向代理 负载均衡 二.运行和控制Nginx 备注: 以下命令中的 /usr/local/nginx 是nginx二进制文件的绝对路径,需根据自己实际的安装路径而定. 1.启动 /usr/local/nginx/sbin/nginx 2.重新打开

Nginx应用实践入门

一.HTTP协议包含很多功能 www是http功能之一 www服务端口默认是80,OSI 第7层 应用层协议 二.实现WWW服务的常用Web软件 产品:nginx,apache(静态Web软件) 三.经典的web组合 LAMP(Linux apache mysql php)==>经典 LNMP(Linux Nginx mysql php)==>国内非常流行 四.Nginx介绍 Nginx www服务软件,俄罗斯人开发,开源,性能很高 Nginx本身是一款静态(html,js,css,jpg等)

mongodb由浅入深(50+文章)

博客2011年就上线了,可是没有打理,从2013年开始六七月份开始用心打理,开始和漠北业余时间写点文章,nginx.zabbix.mms都已经整理了部分,漠北日理万机没有时间汇总mongodb,罢了,让我这个做小弟的来汇总一次吧,对运维技术有兴趣的加群:qq群①39514058,qq群②6690706 mongodb入门(必备) 1. ttlsa教程系列之mongodb-(一)mongodb介绍 2. ttlsa教程系列之mongodb--(二)mongodb安装 3. ttlsa教程系列之mo

Nginx&Apache&PHP参数汇总

1.Nginx vim /etc/nginx/conf.d/www.cmdschool.org.conf   client_max_body_size 30m; //上传文件大小改30M   upstream www.cmdschool.org {     server 10.168.82.25:87;     ip_hash;   }   server {     listen 80;     server_name www.cmdschool.org;     location / {   

Nginx: Too Many Open Files解决方案汇总

在做Nginx高压力测试时,偶尔某台WEB的logs抛出Too Many Open Files,一般从以下3方面调优: 第一:nginx.conf参数规划与设置 worker_rlimit_nofile :限制单个工作进程打开的最大文件数: 首先查看这个值设置,推荐设置:越大越好 第二:系统级别的检查与设置 就是 /etc/security/limits.conf的配置与修改,请参考Linux系统资源限制汇总 第三:内核级别的检查与设置: fs.file-max值的大小设置: 注意:file-m

nginx 场景业务汇总 (中)

本文链接:http://www.cnblogs.com/zhenghongxin/p/8906225.html,如果可以,请阅读上篇 <nginx场景业务汇总(初)> (十三)负载均衡 轮询 http { upstream myapp1 { server srv1.example.com; server srv2.example.com; server srv3.example.com; } server { listen 80; location / { proxy_pass http://

nginx的502错误及常见解决方法汇总

nginx以其高性能以及对物理计算资源的高密度利用,展示了较apache更为优越的性能,目前很多企业都 更加倾向于使用nginx架构的web服务,但是我们在安装配置与配置的过程中经常会遇到502的错误,那么 引起这些错误的原因有哪些,又有着哪些解决方法呢?我们以其来看一下 一.配置文件出错 我们在搭建LNMP环境的时候,尤其要编译php和nginx,悉心的人会发现,这里编译php与LAMP环境中编译 的php的方式不一样,并没有像在apache的基础上编译php那样要在编译参数中添加与nginx

nginx几个知识点汇总

处理query_string(1)什么是query_string:http://i.cnblogs.com/EditPosts.aspx?opt=1 上面链接中的?后面的opt=1就是query_string,即url中?后面的都是(2)nginx中如何获取到上面的值.本例以query_string有一个key为例,多个就是多个正则引用$1,$2的区别而已nginx中全局变量$args和$query_string中存放的数据就是请求的url中带的query_string如何获取query_str