服務端獲取nginx代理后的用戶真實ip


@RequestMapping("/")
    public void a(HttpServletRequest request) {
        System.out.println(request.getRemoteAddr()); //ng的地址
        System.out.println(request.getHeader("x-forwarded-for")); //一個或多個地址,每次代理都會多一個ip,所以第一為真實地址(類似於這種形式:192.168.1.2, 192.168.1.3, 192.168.1.n)
        System.out.println(request.getHeader("x-real-ip")); //發給ng的請求的地址
    }

X-Forwarded-For是一個可疊加的過程,后面的代理會把前面代理的IP加入X-Forwarded-For

當只有一層ng時,X-Forwarded-For與x-real-ip值相同。

因此獲取真實ip順序為

  1. 獲取X-Forwarded-For第一個ip
  2. 獲取x-real-ip
  3. 上面2個都沒有的話,只能獲取remoteaddr了


免責聲明!

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



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