zoukankan      html  css  js  c++  java
  • 服务端获取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了
  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
  • 原文地址:https://www.cnblogs.com/liuboyuan/p/12151007.html
Copyright © 2011-2022 走看看