基于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;
......
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。