在使用Nginx方向代理后
Remote Address代表的就是服务器的ip地址,而不是客户端的ip地址了,想要获取真实ip,就需要在Nginx里面配置
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $http_x_forwarded_for - $http_x_real_ip'; access_log logs/access.log main; sendfile on; keepalive_timeout 65; upstream tomcat_server_pool{ #server 172.17.0.14:3000 weight=10; #server 172.17.0.14:3001 weight=10; server 127.0.0.1:1001 weight=10; } server { listen 80; server_name localhost; location / { proxy_pass http://tomcat_server_pool; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; root html; index index.html index.htm; } } }
其中X-Real-IP和X-Forwarded-For都是客户端真实地址
public void login(HttpServletRequest request, Model model) { String remoteHost = request.getRemoteHost(); String clientIp = request.getHeader("x-forwarded-for"); log.info("clientIp:{}",clientIp); String proxyClientIP = request.getHeader("Proxy-Client-IP"); log.info("proxyClientIP:{}",proxyClientIP); String xRealIP = request.getHeader("X-Real-IP"); log.info("xRealIP:{}",xRealIP); String host = request.getHeader("Host"); log.info("host:{}",host); String remoteAddr = request.getRemoteAddr(); log.info("remoteAddr:{}",remoteAddr); model.addAttribute("year", TimeUtils.getYear()); queryIp.judgeIp(model, remoteHost, request.getLocalAddr()); }
结果
Nginx相关命令
/usr/local/webserver/Nginx/sbin/Nginx -s reload # 重新载入配置文件 /usr/local/webserver/Nginx/sbin/Nginx -s reopen # 重启 Nginx /usr/local/webserver/Nginx/sbin/Nginx -s stop # 停止 Nginx
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。