码迷,mamicode.com
首页 > 编程语言 > 详细

spring 应用服务获取nginx代理后的用户真实ip

时间:2020-01-05 09:30:38      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:div   应用服务   col   应用   多个   没有   for   顺序   rem   

@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了

spring 应用服务获取nginx代理后的用户真实ip

标签:div   应用服务   col   应用   多个   没有   for   顺序   rem   

原文地址:https://www.cnblogs.com/liuboyuan/p/12151007.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!