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服务器如何设置url链接
Mar 31 Servers
详解nginx.conf 中 root 目录设置问题
Apr 01 Servers
uwsgi+nginx代理Django无法访问静态资源的解决
May 10 Servers
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
May 26 Servers
nginx内存池源码解析
Nov 20 Servers
CentOS7和8下安装Maven3.8.4
Apr 07 Servers
Apache Hudi 加速传统的批处理模式
Apr 24 Servers
Windows Server 2019 安装DHCP服务及相关配置
Apr 28 Servers
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
Apr 29 Servers
Ubuntu安装Mysql+启用远程连接的完整过程
Jun 21 Servers
Windows10安装Apache2.4的方法步骤
Jun 25 Servers
Tomcat安装使用及部署Web项目的3种方法汇总
Aug 14 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.MVC的模板标签系统(三)
2006/09/05 PHP
php email邮箱正则
2008/10/08 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
php中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
简单谈谈React中的路由系统
2017/07/25 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
js实现全选和全不选
2020/07/28 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
Python中实现参数类型检查的简单方法
2015/04/21 Python
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
Python WSGI的深入理解
2018/08/01 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
python+requests实现接口测试的完整步骤
2020/10/27 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
房地产出纳岗位职责
2013/12/01 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android
Flink 侧流输出源码示例解析
2022/09/23 Servers