Nginx反向代理获取真实IP

2021-01-27  乐帮网

nginx

站点在使用Nginx反向代理后,就会定向转发到本地的服务端口。这时我们使用后台程序获取IP时发现取到的都是代理服务器的IP地址,而非真实的用户IP地址。登录我的代理和站点都在同一个服务器上,这里我们在后端获取到的就是127.0.0.1,这个显然不是我们想要的IP。

不管你后台使用的是何种语言,java,php,nodejs,.net或者netcore道理都是一样的。那么我们应该如何解决问题呢?其实要解决也很简单,前提你要理解反向代理自然就会想到解决办法。

nginx

 

如上图所示,我们只要在 nginx的转发参数中加入我们想要的信息即可实现我们的目的。这里的加参数一般指加到头上,header中。只需要在niginx配置中添加如下配置:

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

其中各参数的含义如下所示:

$http_host 包含用户访问的真实的域名和端口号;
$scheme表示用户使用的什么协议是http还是https;
$remote_addr表示用户访问的真实IP;
$proxy_add_x_forwarded_for表示的如果用户使用的是代理那么一般真实IP会包含在此字段中,主要用于代理网络的转发。

配置完成后,我们就可以在后台直接从request的header中取X-Real-IP的值 即为真实的访问IP,也可以把代理上网的这个判断加上,优先判断header中的X-Forwarded-For,为空再取X-Real-IP。

这就是lebang2020.cn带来的详细内容,有疑问可公众号内留言讨论。

网页地址:https://lebang2020.cn/details/210127jdutbtyf.html

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力