Joh*_*die 26 nginx rate-limiting
我正在研究使用 nginx 的HttpLimitReqModule 进行速率限制。但是,请求都来自同一个 IP(负载均衡器),在标头中有真实的 IP 地址。
有没有办法根据X-Forwarded-For标头中的 ip 而不是源的 ip来设置 nginx 速率限制?
And*_*sov 32
是的,典型的限速配置定义字符串如下所示:
limit_req_zone $binary_remote_addr zone=zone:16m rate=1r/s;
Run Code Online (Sandbox Code Playgroud)
$binary_remote_addr限制器的唯一键在哪里。您应该尝试将其更改为$http_x_forwarded_for获取X-Forwarded-For标头值的变量。虽然这会增加内存消耗,因为$binary_remote_addr使用压缩的二进制格式来存储 IP 地址,$http_x_forwarded_for而不是。
limit_req_zone $http_x_forwarded_for zone=zone:16m rate=1r/s;
Run Code Online (Sandbox Code Playgroud)
该limit_req_zone指令定义了用作请求分组键的变量。
通常,$binary_remote_addr使用 而不是$remote_addr因为它更小并且节省空间。
也许您还想使用RealipModule。
这会将远程地址变量重写为自定义标头中提供的地址,并且还将使日志记录和其他变量的使用更容易。
| 归档时间: |
|
| 查看次数: |
21703 次 |
| 最近记录: |