文档章节

Nginx 手记(三)请求限制

神奇Sam
 神奇Sam
发布于 2017/08/30 14:39
字数 565
阅读 443
收藏 0

前言

HTTP协议的连接与请求
    0、完成HTTP请求前,需要完成TCP的三次握手
    1、HTTP请求建立在一次TCP连接基础上
    2、一次TCP连接至少产生一次HTTP请求

一、概念

1、连接配置
#开辟一个空间存储连接状态
#key:指定存储的key,如:用客户端的ip作为key,那么限制的就是ip
#name:指定空间名字
#size:指定空间大小 
语  法:limit_conn_zone key zone=name:size
默认值:无
上下文:http

#使用连接限制
#zone:指定上面配置的zone的名字
#number:限制并发数
语法:limit_conn zone number;
默认值:无
上下文:http,server,location

2、请求配置
#key:指定存储请求的key
#name:指定空间名字
#size:指定空间大小 
#rate:请求的限制,以秒为单位,限制每秒请求个数,如:1r/s 每秒一个请求
语法:limit_req_zone key zone=name:size rate=rate;
默认值:无
上下文:http

#zone:指定上面配置的zone的名字
#burst:客户端请求超过速率以后,指定number个遗留到下一秒执行
#nodelay:其他超过速率的请求将不延迟返回
语法:limit_req zone=name [burst=number] [nodelay]
默认值:无
上下文:http,server,location

二、配置实例

在/etc/nginx/conf.d 修改的default.conf配置,内容如下:
[root@sam ~]# vim /etc/nginx/conf.d/default.conf
#定义限制连接的存储空间,以ip地址作为key进行限制,空间大小为1m
limit_conn_zone $binary_remote_addr zone=conn_zone:1m;
#定义请求访问的存储空间,以ip地址作为key进行限制,空间大小为1m,限制速率为每秒一次请求
limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /opt/site/sam;
        #limit_conn conn_zone 1;                    #配置连接限制
        #limit_req zone=req_zone burst=3 nodelay;   #配置请求限制,指定遗留3个请求到下一秒执行,其他请求无延时返回
        #limit_req zone=req_zone burst=3;
        limit_req zone=req_zone;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
重新加载 nginx 配置
nginx -s reload -c /etc/nginx/nginx.conf 
或
systemctl reload nginx
使用ab测试工具进行压测
ab -n 20 -c 20 http://localhost/index.html

© 著作权归作者所有

共有 人打赏支持
神奇Sam
粉丝 22
博文 41
码字总数 27998
作品 0
广州
程序员
《Python自动化运维开发实战》课程配套手记内容列表

自动化实战课程的手记内容手记列表 各位同学,《Python自动化运维开发实战》实战课中的配套手记内容列表如下,供大家参考学习,已经出的手记将参考大家的实际情况进行补充,其他的配套课程整...

幕客技术
01/12
0
0
【Nginx探究系列二】Nginx配置篇之客户Nginx白名单访问配置

一、简介 在通常情况下,使用 nginx 基于 ip 限制访问请求频率等限制内容,我们会需要对特定ip进行限制排除操作,因此本文引入了基于nginx geo 与 nginx map 进行此类情景相关配置; 在没有人...

开源中国首席撸码官
2015/10/10
2.2K
0
Multi-Stage Build多阶段Build Docker镜像

我们在上一篇手记 中给大家介绍了如何完全使用Docker搭建Angular开发和测试环境,今天我们接着这个话题给大家看看如果通过Docker部署Angular项目。 我们先看看假如没有Docker,我们一般怎么去...

麦兜搞IT
05/29
0
0
nginx报错打开文件数过多

一、问题 nginx连接数暴涨,查看error.log文件,发现很多 二、原因 Linux是限制系统/应用/用户打开文件的数量的,当应用已经打开了上限数量的文件,再有打开新的文件的请求,之前打开的文件又...

降龙罗汉
2016/03/15
140
0
Varnish调优手记

最近公司做活动推广,流量暴增,后端服务器压力山大,导致用户的请求响应时间延长,客户因此抱怨声音很大。   为尽快解决问题,在安排人员不断优化后端代码的同时,考虑在nginx前增加varni...

nmshuishui
2014/05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

深夜胡思乱想

魔兽世界 最近魔兽世界出了新版本, 周末两天升到了满级,比之前的版本体验好很多,做任务不用抢怪了,不用组队打怪也是共享拾取的。技能简化了很多,哪个亮按哪个。 运维 服务器 产品 之间的...

Firxiao
14分钟前
0
0
MySQL 8 在 Windows 下安装及使用

MySQL 8 带来了全新的体验,比如支持 NoSQL、JSON 等,拥有比 MySQL 5.7 两倍以上的性能提升。本文讲解如何在 Windows 下安装 MySQL 8,以及基本的 MySQL 用法。 下载 下载地址 https://dev....

waylau
47分钟前
0
0
微信第三方平台 access_token is invalid or not latest

微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事. 现在记录一下解决问题的过程,方便后来人参考. 我遇到的这个问题搜索了整个网络也...

自由的开源
今天
0
0
openJDK之sun.misc.Unsafe类CAS底层实现

注:这篇文章参考了https://www.cnblogs.com/snowater/p/8303698.html 1.sun.misc.Unsafe中CAS方法 在sun.misc.Unsafe中CAS方法如下: compareAndSwapObject(java.lang.Object arg0, long a......

汉斯-冯-拉特
今天
2
0
设计模式之五 责任链模式(Chain of Responsibility)

一. 场景 相信我们都有过这样的经历; 我们去职能部门办理一个事情,先去了A部门,到了地方被告知这件事情由B部门处理; 当我们到了B部门的时候,又被告知这件事情已经移交给了C部门处理; ...

JackieRiver
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部