1. 程式人生 > >Nginx獲取客戶端IP實現(親測可用)

Nginx獲取客戶端IP實現(親測可用)

步驟方法:

1、在代理模組新增紅色部份程式碼

location / { 

    proxy_pass http://myweb/;
     proxy_redirect    off;//這行如果報錯,可以註釋掉
     proxy_set_header  Host             $host;
     proxy_set_header  X-Real-IP        $remote_addr;
     proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

}

2、在專案後面使用如下方法獲取

/***
 * 獲取客戶端IP地址;這裡通過了Nginx獲取;X-Real-IP,
 * @param request
 * @return
 */
public static String getClientIP(HttpServletRequest request) {
String fromSource = "X-Real-IP";
String ip = request.getHeader("X-Real-IP");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Forwarded-For");
fromSource = "X-Forwarded-For";
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
fromSource = "Proxy-Client-IP";
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
fromSource = "WL-Proxy-Client-IP";
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
fromSource = "request.getRemoteAddr";
}
return ip;
}