NGINX反向代理,后端服务器获取真实IP

当使用NGINX作为反向代理时,后端服务器无法直接获取真实IP。解决方法包括在NGINX中启用http_realip_module模块,并在后端的Apache、Tomcat等服务器配置中进行相应设置,以确保后端能正确识别客户端的真实IP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般使用中间件做一个反向代理后,后端的web服务器是无法获取到真实的IP地址。

但是生产上,这又是不允许的,那么怎么解决?

1.在NGINX反向代理服务器上进行修改
2.修改后端web服务器配置文件

NGINX:

需要添加一个模块来处理包头
1.可通过添加http_realip_module模块来获取真实客户端IP地址
2.修改NGINX配置文件启动模块作用

vim  /usr/local/nginx/conf/nginx.conf
  location / {
... 
proxy_set_header    Host                        $host;
                proxy_set_header    X-Real-IP                    $remote_addr;
                proxy_set_header    X-Forwarded-For              $proxy_add_x_forwarded_for;
                proxy_set_header    HTTP_X_FORWARDED_FOR      $remote_addr;
        }

3.重启NGINX服务器

后端web服务器修改

后端服务器
粟子:Apche,NGINX,Tomcat

NGINX:
修改配置文件


在多级Nginx反向代理的配置中,要确保后端服务器能够获取到客户端的真实IP地址,你需要在每级Nginx上进行适当的配置。这里提供一些关键步骤来实现这一目标: 参考资源链接:[Nginx多级反向代理下客户端IP转发与RealIP模块配置详解](https://wenku.youkuaiyun.com/doc/64531cebea0840391e76e44d?spm=1055.2569.3001.10343) 首先,在前端Nginx服务器上,需要在配置文件的相应`location`块中设置正确的`proxy_set_header`参数,以确保HTTP头信息中包含真实客户端的IP地址。具体操作如下: ```nginx location / { proxy_pass *** *** $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } ``` 这里`$remote_addr`变量存储的是连接到Nginx服务器的客户端IP地址,而`$proxy_add_x_forwarded_for`是Nginx在接收到来自另一个代理服务器的请求时,会把前一个代理服务器IP地址添加到`X-Forwarded-For`头信息中。 接下来,在后端Nginx服务器上,需要确保已经安装并启用了`NginxHttpRealIpModule`模块。可以通过检查`/etc/nginx/nginx.conf`文件中是否有`http_realip`模块的配置指令来确认是否已启用该模块。如果没有启用,需要重新编译Nginx并加入`--with-http_realip_module`参数。 在后端Nginx中,可以使用`set_real_ip_from`指令来指定哪些前端Nginx代理服务器IP地址将被视为真实来源的IP地址,以及使用`real_ip_header`来设置特定的头信息字段,如`X-Real-IP`或`X-Forwarded-For`,从而获取客户端的真实IP地址。 ```nginx set_real_ip_from frontend_proxy_ip; # 指定前端Nginx代理服务器IP real_ip_header X-Real-IP; # 或者使用 X-Forwarded-For ``` 确保配置正确后,需要重新加载或重启Nginx服务以使配置生效。这可以通过运行`nginx -s reload`命令完成。 通过上述配置,无论请求经过多少级的Nginx反向代理后端服务器都应该能够获取到正确的客户端真实IP地址。此外,为了验证配置是否成功,可以在后端服务器上查看日志或执行相关的调试命令,以确认`X-Real-IP`和`X-Forwarded-For`等头信息是否包含了正确的客户端IP地址。 如果你希望更深入地了解Nginx反向代理配置以及如何处理多级代理下的真实IP地址问题,推荐你查阅《Nginx多级反向代理下客户端IP转发与RealIP模块配置详解》。这本书将为你提供从理论到实践的全面指导,帮助你在复杂的网络架构中确保IP地址的准确转发。 参考资源链接:[Nginx多级反向代理下客户端IP转发与RealIP模块配置详解](https://wenku.youkuaiyun.com/doc/64531cebea0840391e76e44d?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值