5. Nginx基础模块-Nginx访问限制

1 Nginx访问限制

经常会遇到这种情况,服务器流量异常,负载过大等等,对于流量恶意的攻击访问,会带来带宽的浪费,服务器压力,影响业务,往往考虑到对同一个ip的连接数,并发数进行限制。

ngx_http_limit_conn_module模块可以根据一定的key来限制每个键值的连接数,如同一个IP来源的连接数

limit_conn_module 连接频率限制

limit_req_module 请求频率限制

http协议的连接与请求

HTTP是建立在TCP上,完成HTTP请求需要先建立TCP三次握手(称为TCP连接),再连接的基础上HTTP请求

HTTP请求建立在一次TCP连接基础上,一次TCP请求至少产生一次HTTP请求。

变量:

$binary_remote_addr 变量的长度是固定的4字节

$remote_addr 变量的长度是7-15字节

IP个ip地址32bit=4字节

1.1 Nginx连接限制语法

Syntax:limit_conn_zone key zone=name:size;

Default:–

Context:http

Syntax:limit_conn zone number;

Default:-

Context:http, server, location

1.2 代码使用方法

Nginx 连接限制实践
http {
//http段配置连接显示,同一时刻只允许一个客户端IP连接
limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
......
		server	{
......
					location	/ {
.....
						limit_conn conn_zone 1;	 //同一时刻只允许一个客户端ip连接
		}
}
Nginx请求限制实战
http	{
//http段配置请求限制,rate限制速率,限制一秒钟最多一个ip请求
limit_req_zone $binary_remote_addr zone=req_game:10m  rate=1r/s;	
.....
	server {	
	......
			location  / 	{
			//1r/s只接受一个请求,,其余请求决绝并返回错误代码给客户端
					#limit_req zone=req_game;		
			//请求超过1r/s,剩下的将被延迟处理,请求数超过burst定义的数量,多余的请求返回503
					limit_req zone=req_game burst=3 nodelay;
			}
	}
}

1.3 压力测试

使用ab工具进行压力测试

yum install -y httpd-tools

[root@nginx_web1 ~]# ab -n 50 -c 20 http://127.0.0.1/index.html
在这里插入图片描述

4.4 Nginx连接限制没有请求限制有效

我们前面说的,多个请求可以建立再一次tcp连接之上,那么我们对请求的精准度,当然比对一个链接限制会更加有效,因为同一时刻只允许一个连接请求进入,但是同一时刻多个请求可以通过一个连接进入。所以我们请求限制是比较优的解决方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值