网上常见nginx配置ip请求头

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

风险: 用于可以通过自己设置请求头来伪造ip,比如用于在发起http请求是自己测试请求头x-forwarded-for:192.168.0.151。那么服务器通过x-forwarded-for获取到的第一个ip就是用户伪造的ip。

防止伪造方案:
情况1:
在只有1层nginx代理的情况下,设置nginx配置

proxy_set_header X-Forwarded-For $remote_addr;

此时$remote_addr获取的是用于的真是ip。
情况2:
在有多层反向代理的情况下,
1)设置“最外层”nginx配置和情况1一样

proxy_set_header X-Forwarded-For $remote_addr;

2)除了最外层之外的nginx配置

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

这样就防止了用户通过伪造请求头来伪造真实ip。后台只需要从x-forwarded-for请求头中取出第一个ip就是用户的真实ip。后面如果有多个ip,就是反向代理的ip

同理:X-Real-IP也差不多。不同的是
当只有1层nginx代理情况下只需配置

proxy_set_header X-Real-IP $remote_addr;

即可。
当有多层反向代理时,只能在最外层代理设置

proxy_set_header X-Real-IP $remote_addr;

,如果在非最外层设置,则获取到的是反向代理机器的ip。


标题:nginx配置X-Forwarded-For 防止伪造ip
作者:TravelEngineers
地址:https://www.mycitymemory.com/articles/2019/12/27/1577451844165.html
版权声明:转载请注明博文地址,尊重作者劳动成果。
作者简介:坐标魔都,一枚爱旅行爱摄影的攻城狮。愿攻城拔寨的路上,你不用996,也不再孤单,加油。

添加新评论