背景
当前服务器采用nginx + tomcat模式,域名解析到A服务器,通过nginx转发到B服务器的tomcat,实现二级域名的解析工作。
需求
后端服务需要获取用户真实IP地址,并解析对应的所属区域。
实现
1、配置nginx
location / {
proxy_pass http://localhost:8090;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
说明:这里相当于在HttpServletRequest上添加了两个参数,即 “X-Real-IP”," X-Forwarded-For"
,并从当前客户端请求获取header参数"remote_addr" 赋值。
2、获取
后端请求时,只需要通过header参数获取对应的参数即可
String realIp = request.getHeader(“X-Forwarded-For”);
此处的参数 “X-Forwarded-For” 一定要和nginx配置的参数名称一致,否则无法获取