基于java配置nginx获取真实IP代码实例
1、java代码
/**获取客户端IP*/ publicstaticfinalStringgetClientIp(HttpServletRequestrequest){ Stringip=request.getHeader("X-Forwarded-For"); if(StringUtils.isBlank(ip)||"unknown".equalsIgnoreCase(ip)||"127.0.0.1".equalsIgnoreCase(ip)){ ip=request.getHeader("Proxy-Client-IP"); } if(StringUtils.isBlank(ip)||"unknown".equalsIgnoreCase(ip)||"127.0.0.1".equalsIgnoreCase(ip)){ ip=request.getHeader("WL-Proxy-Client-IP"); } if(StringUtils.isBlank(ip)||"unknown".equalsIgnoreCase(ip)||"127.0.0.1".equalsIgnoreCase(ip)){ ip=request.getHeader("X-Real-IP"); } if(StringUtils.isBlank(ip)||"unknown".equalsIgnoreCase(ip)||"127.0.0.1".equalsIgnoreCase(ip)){ ip=request.getRemoteAddr(); } if(StringUtils.isBlank(ip)||"127.0.0.1".equals(ip)||ip.indexOf(":")>-1){ try{ ip=InetAddress.getLocalHost().getHostAddress(); }catch(UnknownHostExceptione){ ip=null; } } //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 if(ip!=null&&ip.length()>15){ if(ip.indexOf(",")>0){ ip=ip.substring(0,ip.indexOf(",")); } } returnip; }
2、nginx需要进行相应修改,重点proxy_set_header
server{ listenxxxx; server_name127.0.0.1; #静态页面目录 rootxxxxxxxxxx; #默认首页 indexlogin.html; proxy_set_headerHost$http_host; proxy_set_headerX-Real-IP$remote_addr; proxy_set_headerREMOTE-HOST$remote_addr; proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for; add_headerAccess-Control-Allow-Origin*; add_headerAccess-Control-Allow-Methods'GET,POST'; add_headerAccess-Control-Allow-Headers'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; #proxy_cookie_path/*/*; client_max_body_size100m; location/{ proxy_set_headerHost$http_host; proxy_set_headerX-Real-IP$remote_addr; proxy_set_headerREMOTE-HOST$remote_addr; proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for; proxy_set_headerUpgrade$http_upgrade; proxy_set_headerConnection"upgrade"; add_headerAccess-Control-Allow-Origin*; add_headerAccess-Control-Allow-Headers'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; add_headerAccess-Control-Allow-MethodsGET,POST,OPTIONS; ...... } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。