如何获取用户的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);
相关推荐
福建佰胜张工6 分钟前
3HNA006643-001 BRACKET ZB/CCIB:ABB 喷涂机器人关键结构件深度解析
网络·机器人
一 乐19 分钟前
家政服务管理系统|基于springboot + vue家政服务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·家政服务管理系统
KKKlucifer20 分钟前
数据安全管控产品选型排名与深度解析
网络·安全
JCETech_Info1 小时前
【西门子指南】GoProbe 在 SINUMERIK 840D/828D 上的应用
网络·制造·智能制造·cnc·宏程序·测头
互联网散修1 小时前
鸿蒙实战:网络状态监听与诊断工具
网络·华为·harmonyos·网络状态监听
碳基硅坊1 小时前
Spring AI:把大模型接进 Spring 应用
java·人工智能·spring ai
黄毛火烧雪下1 小时前
Java 核心知识点总结(一)
java·开发语言
其实防守也摸鱼2 小时前
软件安全与漏洞--软件安全编码与防御技术理论题库
开发语言·网络·安全·网络安全·软件安全·软件安全与漏洞
Yang96112 小时前
光纤接续零损耗:成都鼎讯 AM-601光纤熔接机在风电能源中的应用
网络·能源
技术小结-李爽2 小时前
【工具】Maven的下载、安装、使用
java·maven