Nginx 支持 allow
和 deny
限制 IP 的语法,例如allow 192.168.1.1;
.但如果流量通过反向代理,则 IP 将引用代理的 IP。那么如何将其配置为将特定源 IP 列入白名单并拒绝所有其他传入请求呢?
最佳答案
remote_addr 将引用代理,但您可以配置代理以发送带有 header 字段 X-Real-IP/X-Forwarded-For 的客户端地址。
结合 ngx_http_realip模块,您可以修改传入 header 以使用remote_addr的真实客户端地址。我相信这将使用允许/拒绝语法按预期工作。
只是为了澄清——启用和配置模块后允许/拒绝语法应该相同。在下面替换您的 IP 和代理地址。
后端 nginx 允许/拒绝:
location / {
allow <your ip>;
allow 127.0.0.1;
deny all;
}
后端 nginx realip 配置:
set_real_ip_from <your proxy>;
real_ip_header X-Forwarded-For;
在您的 nginx 代理配置上:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
如果您涉及多个中间代理,则需要启用 real_ip_recursive 并使用 set_real_ip_from 指令将其他地址列入白名单。
关于Nginx - 允许源 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36268272/