在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Linux/ 服務(wù)器怎么獲取客戶端ip地址?

服務(wù)器怎么獲取客戶端ip地址?

現(xiàn)在網(wǎng)站前端用vue寫的,客戶端訪問服務(wù)器通過nginx轉(zhuǎn)發(fā)到vue頁面,vue頁面再訪問tomcat服務(wù)器,實際上是vue頁面向tomcat發(fā)請求,這時,tomcat拿到的客戶端的IP地址就是vue頁面請求地址,最后拿到127.0.0.1。請問這種情況怎么拿到客戶端的真實ip地址?

回答
編輯回答
不將就
一般nginx要獲取真實ip需要location段加上
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
當(dāng)然也要視實際情況而定
2018年9月13日 11:11
編輯回答
落殤

不應(yīng)該是客戶端請求nginx拿到vue頁面,然后vue頁面再請求nginx,然后ngix將請求轉(zhuǎn)發(fā)到tomcat,tomcat返回數(shù)據(jù)嗎?vue直接透過nginx訪問tomcat這樣不好吧。

上面的大兄弟說了nginx的配置。我提供下java中獲取ip地址代碼,參考下:

public static String getIpAddr(HttpServletRequest request) {  
        String ip = request.getHeader("x-forwarded-for");  
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getHeader("Proxy-Client-IP");  
        }  
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getHeader("WL-Proxy-Client-IP");  
        }  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");  
        }  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)||ip.startsWith("10.")) {  
            ip = request.getRemoteAddr();  
        }  
        return ip;  
    }  
2017年12月14日 16:50