问题
公司最近的一个新的接口项目,需要判断客户服务器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");