Nginx 做为前端负载均衡时,后端服务器获取的IP为 Nginx 的本机IP,让Nginx 把用户IP传递到后端里面去。
问题
Nginx 做为前端负载均衡时,后端服务器获取的IP为 Nginx 的本机IP.
解决办法
1. Nginx 开启 http_realip_module 模块
./configure --with-http_realip_module
make && make install
2. Nginx 前端 增加 proxy_set_header
proxy_set_header X-Real-IP $remote_addr;
3. Nginx 后端 增加 real_ip_header
real_ip_header X-Real-IP;
后端配置 必须重启 Nginx 才能生效, reload 不生效。
4. Tomcat 后端 需要修改 Service.xml
找到
pattern="%h %l %u %t "%r" %s %b" />
修改为
pattern="%{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %q %{User-Agent}i %T" resolveHosts="false"/>