nginx获取不到真实ip地址,注意这个细节

这篇具有很好参考价值的文章主要介绍了nginx获取不到真实ip地址,注意这个细节。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 一定要把proxy_pass语句放在最后面

location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 1024m;
        # 一定要把这句放在后面
        proxy_pass http://test_app;
}

2 使用代码获取,以java为例文章来源地址https://www.toymoban.com/news/detail-637556.html

if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
    // 多次反向代理后会有多个ip值,第一个ip才是真实ip
    if (ip.contains(",")) {
        ip = ip.split(",")[0];
    }
}
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_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}

//如果上面没有获得代理的IP,则使用获取真实IP的请求头进行尝试
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    ip = request.getHeader("X-Real-IP");
}

//上面都还没有,有可能就是局域网内的IP进行操作的,则获取请求头的局域网IP
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    ip = request.getRemoteAddr();
}

到了这里,关于nginx获取不到真实ip地址,注意这个细节的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【vue】前端获取用户真实IP地址 (外网IP地址)

    1. 打开index.html !-- 引入JS -- script src=\\\"http://pv.sohu.com/cityjson?ie=utf-8\\\"/script  2. 获取IP  let IP = returnCitySN[\\\"cip\\\"]; localStorage.setItem(\\\'ip\\\',IP);  完整代码:

    2024年02月16日
    浏览(40)
  • Django 获取真实ip地址

    2024年02月12日
    浏览(35)
  • docker 容器获取真实ip地址

    1、调用处 2、Iputils **特别注意:**如果使用到了nginx代理的话,需要在nginx.cofig内加上下面配置 效果: 加油,奥利给

    2024年02月16日
    浏览(28)
  • Java-通过IP获取真实地址

    最近写了一个日志系统,需要通过访问的 IP 地址来获取真实的地址,并且存到数据库中,我也是在网上看了一些文章,遂即整理了一下供大家参考。 这个是获取正确 IP 地址的方法,可以直接使用的。 通过以上方法你可以获取到访问者的 IP 地址,只有获取到了 IP 地址,才能

    2024年02月15日
    浏览(34)
  • Kubernetes Pod 获取真实 IP 地址

    1.1 链路介绍 7 层转发链路 : Client -- Nginx -- K8s Nginx Ingress 4 层转发链路: Client -- 公有云 SLB(或 F5、LVS、Haproxy 等)-- K8s Nginx Ingress 实际业务可能会串联更多层级的转发。例如 WAF、CDN、API Gateway 一般都是 7 层转发,LB、LVS 一般是 4 层 TCP 转发。 1.2 准备 Whoami 探针 whomai 是一个

    2024年02月16日
    浏览(30)
  • JavaWeb 获取客户端的真实IP地址

    通常我们在JavaWeb中获取客户端IP地址只需要使用 request.getRemoteAddr(); 方法即可 如果前端使用了Nginx等反向代理的话,我们使用 request.getRemoteAddr(); 方法获取到的IP地址就是 127.0.0.1 因为经过代理以后,在客户端和服务器之间增加了中间层,因此服务器无法直接拿到客户端的 IP 但

    2024年02月15日
    浏览(40)
  • nginx配置获取真实ip

    要想在应用中获取到真实IP,取决于各个转发节点的传递配置, 第一、要确定客户端使用哪个请求头传递IP地址 第二、第一转发点, proxy_set_header field value value是变量值,来源于请求方 field是变量名,是要发给下一站的变量 注意这个顺序,set设置要发往下一站的变量,紧接着

    2024年02月11日
    浏览(34)
  • 【SpringBoot】SpringBoot获取不到用户真实IP怎么办

    项目部署后发现服务端无法获取到客户端真实的IP地址,这是怎么回事呢?给我都整懵逼了,经过短暂的思考,我发现了问题的真凶,那就是我们使用了Nginx作的请求转发,这才导致了获取不到客户端真实的IP地址,害,看看我是怎么解决的吧! 客户端请求数据时走的是Nginx反

    2024年02月12日
    浏览(28)
  • java获取真实的请求接口ip地址

    在Java程序中获取请求的真实IP地址可以使用以下方法: 使用javax.servlet.http.HttpServletRequest类中的getRemoteAddr()方法,这个方法可以获取请求的IP地址。 可以检查X-Forwarded-For,如果请求是通过代理服务器发送的,那么X-Forwarded-For将包含被代理客户端的IP地址。可以使用HttpServletReque

    2024年02月11日
    浏览(39)
  • 获取客户端真实 IP 地址的最佳实践

    1. 业务上云带来性能收益 公司从去年全面推动业务上云,而以往 IDC 架构部署上,接入层采用典型的 4 层 LVS 多机房容灾架构,在业务高峰时期,扩容困难(受限于物理机资源和 LVS 内网网段的网络规划),且抵挡不住 HTTPS 卸载引发的高 CPU 占用。 而经过压力测试发现,使用

    2024年02月05日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包