nginx反向代理后服务端获取客户端真实ip

1,644 阅读1分钟

nginx反向代理后服务端获取客户端真实ip

在前后端分离的开发架构中,前端的请求通常通过nginx进行反向代理,再发送到真实后端服务上,此时nginx变成了客户端和服务端之间的中间层,服务端通过获取的ip就为nginx所在的服务器的ip。但是,nginx是与客户端直接交互的,因此nginx获取的$remote_addr的值为用户的真实ip,我们修改对应的值为nginx获取的$remote_addr的值,此时服务端就可以获取客户端的真实ip了。

我们可以按照以下流程进行配置:

  1. 打开nginx.conf文件

  2. 在对应的server块中对应的location中添加如下配置

    location /api { 
        proxy_set_header Host $host; 
        proxy_set_header Remote_Addr $remote_addr;
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_pass http://backend; 
    }
    
  3. 使用命令nginx -s reload让nginx重载配置

  4. 此时服务端获取的ip就是客户端的真实ip了