使用nginx以头文件中的自定义参数为标记进行限流

本文介绍了如何在Nginx中针对HTTP头文件中的自定义参数,如X-Signature和X-DeliverId,进行限流操作,以适应动态IP但请求参数不同的场景。通过设置`underscores_in_headerson`并配置`limit_conn`, `limit_req`等指令,实现实时并发和速率限制。

之前总结了一下通过nginx中以ip为标记进行限流的方法
nginx限流配置

今天遇到一个问题:ip是固定的几个,但是每个请求可能不同,这就导致使用ip为标记进行限流显然不合适,可以通过请求头中的其他参数为标记进行限流。比如头文件中的自定义参数
比如头文件中有x-signature和x-deliverid两个自定义参数,我们希望对这两个参数进行限流
例:

# /etc/nginx/nginx.conf
http {
	...
	# 限制并发连接
	limit_conn_zone $http_x_deliverid zone=addr_deliverid:1m;
	limit_conn_zone $http_x_signature zone=addr_signature:1m;
	# 限制连接速率为1r/s
	limit_req_zone  $http_x_deliverid zone=one_deliverid:1m rate=1r/s;
	limit_req_zone  $http_x_signature zone=one_signature:1m rate=1r/s;
    # 开启对带下划线的自定义请求头参数支持
    underscores_in_headers on;
	...
}
# /etc/nginx/sites-enabled/default
server {
	...
    location / {
        ...
        # 限制并发连接数为1
        limit_conn addr_deliverid 1;
        limit_conn addr_signature 1;
        # 允许超过频率限制的请求数不多于5个
        limit_req zone=one_deliverid burst=5;
        li
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值