nginx请求限制配置方法


Posted in Servers onJuly 09, 2021

Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:
在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。

一、Nginx的请求限制

  • limit_conn_module 连接频率限制
  • limit_req_module 请求频率限制

二、HTTP协议的连接与请求

1、HTTP协议的连接与请求的概念

  • HTTP请求是建立在一次TCP连接基础之上,完成一次http协议的请求先要进行tcp的三次握手。
  • 在TCP连接的基础之上再建立HTTP的请求,一次TCP请求至少产生一次HTTP请求。

2、HTTP协议的连接与请求的图解

nginx请求限制配置方法

3、HTTP协议的连接与请求的版本关系

 

HTTP协议版本 连接关系
HTTP1.0 TCP不能复用
HTTP1.1 顺序性TCP复用
HTTP2.0 多路复用TCP复用

三、Nginx连接限制的配置语法

1、limit_conn_zone的配置语法

  • Syntax:limit_conn_zone key zone=name:size; limit_conn_zone表示申请的连接存储空间。key 表示连接以哪个作为key,例如以客户端的ip作为key,限制的就是客户端的ip。zone=name表示申请的存储空间的名称。size表示申请的存储空间的大小
  • Default:—— 表示默认没有配置
  • Context:http 表示需要在http块中进行配置

2、limit_conn的配置语法

  • Syntax:limit_conn zone number; zone表示limit_conn_zone中申请的存储空间的名称,number表示并发请求的限制,即同一时间限制连接数
  • Default:—— 表示默认没有配置
  • Context:http,server,location 表示需要在http块或server块或location块中进行配置

四、Nginx请求限制的配置语法

1、limit_req_zone的配置语法

  • Syntax:limit_req_zone key zone=name:size rate=rate; limit_req_zone表示申请的连接存储空间。key 表示连接以哪个作为key,例如以客户端的ip作为key,限制的就是客户端的ip。zone=name表示申请的存储空间的名称。size表示申请的存储空间的大小。rate表示请求的限制是多大,指的是一个限制的单位(以秒为单位)
  • Default:—— 表示默认没有配置
  • Context:http 表示需要在http块中进行配置

2、limit_req的配置语法

  • Syntax:limit_req zone=name [burst = number] [nodelay]; zone=name表示limit_req_zone中申请的存储空间的名称;burst = number表示超过了设置的速率以后,遗留的请求数量放到下一秒执行;
  • Default:—— 表示默认没有配置
  • Context:http,server,location 表示需要在http块或server块或location块中进行配置

五、Nginx请求限制的配置演示

1、先创建是一个submodule.html页面,上传到/opt/app/html目录下,以便配置好sub_module模块编译参数后访问/opt/app/html目录下的submodule.html页面,查看替换的内容。

submodule.html页面

<html>
	<head>
		<meta charset="utf-8">
		<title>submodule</title>
	</head>
	<body>
		<a>html</a></br>
		<a>xml</a></br>
		<a>json</a></br>
		<a>xml</a></br>
		<a>jsp</a></br>
		<a>html</a>
	</body>
</html>

浏览器访问如下图

nginx请求限制配置方法

2、编辑nginx.conf配置文件

[root@localhost /]# vim /etc/nginx/nginx.conf

nginx请求限制配置方法

3、在http块中添加如下配置

#$binary_remote_addr表示客户端的地址;
#zone=req_zone表示同一个客户端地址发起的请求的存储空间名称
#1r/s 表示每秒一次
limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;

nginx请求限制配置方法

4、在http块的location块中添加如下配置

#nginx连接请求限制的配置
location / {
    root /opt/app/html;
    limit_req zone=req_zone;
}

nginx请求限制配置方法

5、检查配置修改的配置文件是否正确,返回successful表示配置文件修改无错。否则检查配置文件语法。

nginx请求限制配置方法

6、重新加载配置文件

[root@localhost /]# systemctl reload nginx

nginx请求限制配置方法

7、借助ab压力测试工具做并发请求

ab压力测试工具的安装参考lz此博文链接:https://wwwxz.blog.csdn.net/article/details/118584751

#-n表示发起请求次数,-c表示并发请求次数 
[root@localhost ~]# ab -n 20 -c 10 http://localhost/submodule.html

nginx请求限制配置方法

到此这篇关于nginx请求限制配置方法的文章就介绍到这了,更多相关nginx请求限制内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
nginx配置ssl实现https的方法示例
Mar 31 Servers
Nginx配置并兼容HTTP实现代码解析
Mar 31 Servers
Nginx的反向代理实例详解
Mar 31 Servers
小程序后台PHP版本部署运行 LNMP+WNMP
Apr 01 Servers
Nginx 反向代理解决跨域问题多种情况分析
Jan 18 Servers
Nginx实现负载均衡的项目实践
Mar 18 Servers
docker compose 部署 golang 的 Athens 私有代理问题
Apr 28 Servers
如何Tomcat中使用ipv6地址
May 06 Servers
shell进度条追踪指令执行时间的场景分析
Jun 16 Servers
Nginx如何限制IP访问只允许特定域名访问
Jul 23 Servers
Nginx报错104:Connection reset by peer问题的解决及分析
Jul 23 Servers
码云(gitee)通过git自动同步到阿里云服务器
Dec 24 Servers
使用goaccess分析nginx日志的详细方法
Jul 09 #Servers
nginx作grpc的反向代理踩坑总结
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
使用nginx配置访问wgcloud的方法
Jun 26 #Servers
Nginx反向代理配置的全过程记录
制作能在nginx和IIS中使用的ssl证书
解析在浏览器地址栏输入一个URL后发生了什么
You might like
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
JavaScript开发时的五个注意事项
2007/12/08 Javascript
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
js中设置元素class的三种方法小结
2011/08/28 Javascript
javascript中如何处理引号编码&amp;#034;
2013/08/15 Javascript
Express.JS使用详解
2014/07/17 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
jQuery根据表单name获取值的方法
2016/05/24 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
详解python的数字类型变量与其方法
2016/11/20 Python
python使用magic模块进行文件类型识别方法
2018/12/08 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
EJB3推出JPA的原因
2013/10/16 面试题
饭店工作计划书
2014/01/10 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
食品安全标语
2014/06/07 职场文书
会议室标语
2014/06/21 职场文书
学习雷锋标语
2014/06/25 职场文书
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL
Django中celery的使用项目实例
2022/07/07 Python
使用python生成大量数据写入es数据库并查询操作(2)
2022/09/23 Python