栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

如何获取客户端请求真实ip

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何获取客户端请求真实ip

1.正常的逻辑,如果我们直接请求服务,那么在request.getRemoteAddress()就可以拿到原始客户端请求的ip

2.如果新增了nginx代理,那么就只能借助XFF从header里面取了

private String getIpAddr(HttpServletRequest servletRequest) {

        String ips = servletRequest.getHeader("x-forwarded-for");
        if (ips == null || ips.length() == 0 || "unknown".equalsIgnoreCase(ips)) {
            ips = servletRequest.getHeader("Proxy-Client-IP");
        }
        if (ips == null || ips.length() == 0 || "unknown".equalsIgnoreCase(ips)) {
            ips = servletRequest.getHeader("WL-Proxy-Client-IP");
        }
        if (ips == null || ips.length() == 0 || "unknown".equalsIgnoreCase(ips)) {
            ips = servletRequest.getRemoteAddr();
        }

        String[] ipArray = ips.split(",");
        String clientIP = "";
        for (String ip : ipArray) {
            if (!("unknown".equalsIgnoreCase(ip))) {
                clientIP = ip;
                break;
            }
        }
        return clientIP;
    }

3.如果全部署在k8s,会过一道网络代理,那么在网络代理这会做一次NAT,所以如果不想丢失源ip就只能修改externalTrafficPolicy=local 不进行路由,直接在当前节点处理

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/642332.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号