之前总结了一下通过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

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

被折叠的 条评论
为什么被折叠?



