在Nginx反向代理中,要获取真实IP地址,需要注意客户端IP可能会被代理服务器篡改。要解决这个问题,可以通过以下步骤获取真实IP地址:

蓝易云服务器 - nginx反向代理如何获取真实IP?_Nginx

1. 配置Nginx的真实IP模块

Nginx提供了 ngx_http_realip_module模块,用于获取真实IP地址。首先,确保Nginx已经编译安装了该模块。

2. 设置真实IP模块的配置

在Nginx配置文件中,找到 http 块,并添加以下配置:

http {
    # ...

    # 设置允许设置真实IP的代理服务器地址,可以是Nginx代理服务器的IP或者其他代理服务器的IP
    set_real_ip_from  192.168.0.0/24;
    set_real_ip_from  10.0.0.0/8;

    # 设置要获取真实IP的header字段,通常是X-Real-IP或X-Forwarded-For
    real_ip_header    X-Real-IP;
    # 或者
    # real_ip_header    X-Forwarded-For;

    # ...
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

在这个例子中,我们设置允许设置真实IP的代理服务器地址为 192.168.0.0/24 和 10.0.0.0/8。同时,我们指定获取真实IP的header字段为 X-Real-IP。如果您的代理服务器将真实IP保存在 X-Forwarded-For header字段中,可以使用 real_ip_header X-Forwarded-For;

3. 重新加载Nginx配置

完成配置后,使用以下命令重新加载Nginx配置,使更改生效:

sudo nginx -s reload
  • 1.

4. 获取真实IP

现在,Nginx会从指定的header字段中获取真实IP地址。您可以在后端服务器或应用程序中,通过查找指定的header字段,来获取客户端的真实IP地址。

注意:在实际部署中,根据您的网络架构和代理配置,可能需要适当地调整 set_real_ip_from和 real_ip_header的配置,以确保正确获取真实IP地址。

通过这个教程,您已经学会了在Nginx反向代理中获取客户端真实IP地址的方法,确保应用程序能够正确处理客户端的真实IP信息。