nginx 前置设置 WAF 后 ip 限制出现的问题解决
引言
添加 WAF 后 NGINX 的 IP 访问限制可能不生效,通常是因为 WAF 修改了请求头或代理了请求,导致 NGINX 无法正确识别客户端真实 IP。以下是排查和解决的思路:
1. 确认是否启用了代理模式
如果 WAF 运行在代理模式下,客户端请求经过 WAF,再转发到 NGINX,这样 remote_addr
可能变为 WAF 的 IP 地址。
解决方案:
在 NGINX 配置中添加 real_ip_header
和信任的 WAF IP 段,例如:
http {
set_real_ip_from 192.168.0.0/16; # WAF IP 地址段
set_real_ip_from 10.0.0.0/8;
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
}
2. 检查 WAF 是否传递了正确的请求头
确认 WAF 是否将 X-Forwarded-For
或 X-Real-IP
正确传递到后端 NGINX。
3. 验证 IP 限制规则
确认 NGINX 的 IP 限制配置是否仍然有效。例如:
location / {
deny 192.168.1.100;
allow 10.0.0.0/8;
deny all;
}
4. 使用日志调试
开启 NGINX 日志,查看 remote_addr
和 X-Forwarded-For
是否符合预期。
log_format custom_format '$remote_addr - $http_x_forwarded_for';
access_log /var/log/nginx/access.log custom_format;
5. 检查模块冲突
某些 WAF 插件可能会影响 NGINX 的 IP 过滤模块,例如 Lua WAF。可以尝试调整 WAF 插件的执行顺序。
如果需要更详细的帮助,请提供 NGINX 和 WAF 的配置,我可以协助优化配置。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决