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 相关文章推荐
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
Jun 21 Servers
nginx+lua单机上万并发的实现
May 31 Servers
使用nginx配置访问wgcloud的方法
Jun 26 Servers
nginx服务器的下载安装与使用详解
Aug 02 Servers
总结高并发下Nginx性能如何优化
Nov 01 Servers
教你快速构建一个基于nginx的web集群项目
Nov 27 Servers
Tomcat项目启动失败的原因和解决办法
Apr 20 Servers
IIS服务器中设置HTTP重定向访问HTTPS
Apr 29 Servers
Apache SeaTunnel实现 非CDC数据抽取
May 20 Servers
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
Jun 10 Servers
nginx配置指令之server_name的具体使用
Aug 14 Servers
Apache SkyWalking 监控 MySQL Server 实战解析
Sep 23 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 smarty 二级分类代码和模版循环例子
2011/06/01 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
布同 统计英文单词的个数的python代码
2011/03/13 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
python numpy存取文件的方式
2020/04/01 Python
Python使用贪婪算法解决问题
2019/10/22 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
abstract是什么意思
2012/02/12 面试题
个人贷款承诺书
2014/03/28 职场文书
售房委托书
2014/08/30 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
酒店温馨提示语
2015/07/14 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书