问题 公司最近的一个新的接口项目,需要判断客户服务器IP地址,但是在项目中获取到的都是局域网的IP地址。 后来发现通过反向代理的项目使用request.getRemoteAddr()方式获取到的是反向
问题
公司最近的一个新的接口项目,需要判断客户服务器IP地址,但是在项目中获取到的都是局域网的IP地址。
后来发现通过反向代理的项目使用request.getRemoteAddr()方式获取到的是反向代理服务器的IP。
解决
在Http头创建保存真实IP的变量
在Nginx配置文件中获取到真实IP然后赋值给Http头变量X-Real-IP
server { listen 80; server_name localhost; client_max_body_size 10m; location / { root /usr/share/nginx/html; index index.html index.htm; # 获取真实IP地址创建并赋值给HTTP头变量X-Real-IP proxy_set_header X-Real-IP $remote_addr; }}
在程序中获取Http头变量X-Real-IP,从而得到真实IP地址
request.getHeader("X-Real-IP");request.getAttribute("X-Real-IP");