在大多数情况下,网站访问请求并不是直接从用户的浏览器到达网站的源站服务器,而是可能经过CDN、高防IP、WAF等代理服务器。例如,网站可能采用用户 > CDN/高防IP/WAF > 源站服务器等部署架构。
通常,透明的代理服务器在将用户的访问请求转发到下一级服务器时,会在HTTP请求头中添加一条 X-Forwarded-For
记录,用于记录用户的真实IP地址,格式为 X-Forwarded-For: 用户IP
。如果请求经过多个代理服务器,则 X-Forwarded-For
将记录用户真实IP和所经过的每个代理服务器IP。
因此,常见的Web应用服务器可以使用X-Forwarded-For的方式获取访问者的真实IP地址。
以下则是我总结的Nginx通过 X-Forwarded-For
方式获取真实IP的办法:
在nginx.conf中的http项添加如下语句皆可
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
最后,不要忘记重载你的Nginx配置以及查看是否生效!