侧边栏壁纸
  • 累计撰写 2,058 篇文章
  • 累计创建 73 个标签
  • 累计收到 20 条评论

目 录CONTENT

文章目录

Nginx反向代理获取用户的真实IP

大猿本猿
2023-09-07 / 191 阅读 / 169 字

问题描述

使用nginx做反向代理,后端是java,如何在java代码中使用request.getRemoteAddr();获取用户访问的真实IP。

解决方法

修改nginx配置如下:

upstream www.xxx.com {
    ip_hash;
    server serving-server1.com:80;
    server serving-server2.com:80;
}

server {
listen www.xxx.com:80;
server_name www.xxx.com;
location / {
proxy_pass http://www.xxx.cn;
}
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 Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

加入之后重启nginx,就可以用request.getHeader("X-Forwarded-For");​获取真实IP了。

Nginx反向代理获取用户的真实IP