当前位置: 首页 > 知识库问答 >
问题:

linux - nginx 限流配置白名单不生效?

小牛23004
2024-03-28

需要对某个域名下的所有请求速率进行限制,如下配置,设置每个独立的ip每秒只能请求一次,通过geo和map的方式设置白名单,白名单内的ip地址将不做限制,如下配置完成使用jmeter压测发现限制生效了白名单不生效(确认客户端ip没配置错),白名单不生效的原因是什么?

# http处配置限流http {     ...    # rate limit    geo $whitelist {       default 0;       192.168.1.1/32 1;    }    map $whitelist $limit {        0     $binary_remote_addr;        1     "";    }    limit_req_zone       $limit   zone=perip:10m  rate=1r/s;    limit_req_log_level warn;}# server中引用server {    ....    limit_req zone=perip burst=2 nodelay;}

共有1个答案

邢高爽
2024-03-28

白名单不生效的原因可能在于负载均衡器(如阿里云SLB)的透明代理设置导致Nginx获取到的客户端真实IP并非原始客户端IP。在负载均衡器场景下,请求到达Nginx之前,负载均衡器会替换掉原有的TCP/IP头部信息,因此Nginx看到的$remote_addr和$binary_remote_addr将是负载均衡器自身的IP地址而非原始客户端IP。
在Nginx配置中启用并正确配置real_ip_header指令以解析负载均衡器传递过来的真实客户端IP。阿里云SLB一般会通过HTTP头X-Forwarded-For传递真实的客户端IP。

在Nginx配置中加入以下内容:

set_real_ip_from 0.0.0.0/0; # 允许信任来自任何上游服务器的IP(这里是SLB的IP)real_ip_header X-Forwarded-For; # 指定HTTP头名称以获取真实IPreal_ip_recursive on; # 如果有多层代理,递归查找最后一个非内部IP# 然后在geo和map配置中使用$real_ipgeo $whitelist {...}map $real_ip $limit {...}limit_req_zone $limit zone=perip:10m rate=1r/s;
 类似资料:
  • 本文向大家介绍为Nginx服务器配置黑名单或白名单功能的防火墙,包括了为Nginx服务器配置黑名单或白名单功能的防火墙的使用技巧和注意事项,需要的朋友参考一下 功能描述: 处在黑名单中的ip与网络,将无法访问web服务。 处在白名单中的ip,访问web服务时,将不受nginx所有安全模块的限制。 支持动态黑名单(需要与ngx_http_limit_req 配合) 具体详见下面的说明 文件配置方法说

  • 限流说明 每一个系统都有自己的能力水位,而限流就是为了保证当服务请求超出自己的能力水位时的一个保护措施,在高并发的情况下,一个源站故障、一台设备故障、一个网络波动都有可能导致系统崩溃。其中连接数更是重中之重,它直接影响到系统资源的使用。 限流经验 这些数据决定了我们的限流参数设定 Q: 一个QPS带来多少CPU消耗? A: TS 2W QPS 在C5机型CPU消耗90%,C6机型75% Q: 一个

  • 已解决,TMD,chatgpt 的毛病

  • 本文向大家介绍windows下Nginx多域名简单配置教程,包括了windows下Nginx多域名简单配置教程的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Nginx多域名的简单配置教程,供大家参考,具体内容如下 1. windows下安装nginx的目录结构如下: 2. 在nginx-1.12.1目录下conf/nginx.conf 内容 3. vhost 目录下 a_com.c

  • 本文向大家介绍Linux下安装配置nginx详解,包括了Linux下安装配置nginx详解的使用技巧和注意事项,需要的朋友参考一下 一、Linux下安装配置nginx 第一次安装nginx,中间出现的问题一步步解决。 用到的工具secureCRT,连接并登录服务器。 1.1 rz命令,会弹出会话框,选择要上传的nginx压缩包。 1.2 解压 1.3 进入nginx文件夹,执行./configur

  • 配置 NGINX NGINX 相关的配置可以单独写一本书,不过一开始,我们不会用到太多的配置选项。这本书主要介绍搭建一个 LEMP 环境的流程,你可以在相关资源里找到扩展学习的课程与资料。 先去看一下 NGINX 配置文件所在地。 查看 NGINX 的配置: cd /etc/nginx ls 返回: conf.d koi-utf mime.types nginx.conf