如何获取用户的ip地址

用户的 IP 地址可能会被隐藏或者修改,例如使用代理服务器、VPN 等工具,这样就无法准确获取用户的真实 IP 地址。

除了以上特殊情况,一般情况下 用户访问可能会经过一下链路 :

前端--->nginx--->网关--->服务 。 一般情况下后面三个获取的ip地址只能是前一个的ip 如网关只能获取到nginx的ip。所以一般情况下我们都需要从前端获取用户ip,再通过header传递下去。

nginx配置

java 复制代码
server {
    listen 80; #访问端口
    server_name your_domain.com; #访问域名

    location / {
        proxy_pass http://your_backend;  # nginx能访问的后端网关地址
        proxy_set_header X-Real-IP $remote_addr;  # 设置请求头中的 X-Real-IP 字段为用户真实 IP 地址

    }
}

网关配置全局拦截器 implements GlobalFilter 传递ip

java 复制代码
        ServerHttpRequest request = exchange.getRequest().mutate().
                header(CommonConstants.REAL_IP,exchange.getRequest().getRemoteAddress().getHostString()).build();

服务中获取

java 复制代码
        /**
         * HttpServletRequest在微服务中通过获取请求头从而获取到真实的客户端IP
         */
        String ip = request.getHeader(CommonConstants.REAL_IP);
相关推荐
测试仪器廖生1359025638514 小时前
罗德与施瓦茨 FSP13频谱分析仪FSP30
网络·人工智能·算法
上海锝秉工控14 小时前
省线型增量编码器:用“减法思维“重构工业控制的未来
网络·人工智能·重构
阿狸猿14 小时前
论微服务架构及其应用
java·微服务·架构
IT WorryFree14 小时前
FortiGate 排错常用OID速查表(含Trap OID+轮询OID)
运维·网络
m0_7381207214 小时前
渗透测试基础——基于Docker的Rsync服务靶场搭建与原理讲解
运维·服务器·网络·安全·web安全·docker·容器
程序员黑豆14 小时前
Java中的字符串【AI全栈开发】
java
CoreTK芯通康EMC整改15 小时前
PCB 信号回流路径 EMC 失效深度解析:原理、误区与量产级整改方案
网络·经验分享·安全·emc整改案例·emc整改
asdfg125896315 小时前
运营商的路由器到路由器之间是如何传输的
网络·智能路由器
namexingyun15 小时前
开源前端生态如何成为 AI UI 生成的“燃料“:shadcn/ui、Tailwind CSS、Storybook 技术价值全解剖
java·前端·人工智能·python·ui·开源·ai编程
代码中介商15 小时前
HTTP进化史:从1.0到3.0的核心变革
网络·网络协议·http