服務器使用nginx做代理,通過HttpServletRequest獲取請求用戶真實IP地址


在使用nginx做代理時,服務端如果直接從 X-Forwarded-For 頭部獲取來源IP,將獲取到nginx所在的ip地址,而不是請求的真實ip地址。

如何獲取請求的真實IP地址

首先,在nginx配置中添加如下配置

server {
    listen       80;
    server_name  www.wenki.info;    #要訪問的域名

    charset utf8;

    location / {
        proxy_pass       http://server;
        proxy_set_header Host      $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

從nginx中將請求來源IP添加到代理請求頭部,然后使用命令重新加載配置

nginx -s reload

 

服務端使用以下代碼即可獲取請求主機真實IP地址

public static String realIP(HttpServletRequest request) {
    String xff = request.getHeader("x-forwarded-for");
    if (xff != null) {
        int index = xff.indexOf(',');
        if (index != -1) {
            xff = xff.substring(0, index);
        }
        return xff.trim();
    }
    return request.getRemoteAddr();
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM