如何获取用户的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);
相关推荐
桦说编程17 分钟前
盘点并发集合里那些容易误判的行为
java·后端·性能优化
淼澄研学1 小时前
Kimi API黑产倒卖技术解析与Python合规接入指南
开发语言·网络·python
IT爱学堂1 小时前
java版数据结构和算法+AI算法和技能学习指南
java·开发语言
evans在进步2 小时前
LeetCode 394:字符串解码——Java 单栈模拟与嵌套解析详解
java·python·leetcode
无锡耐特森2 小时前
Profinet转ModbusTCP协议网关:数字化工厂跨协议互联
网络
m0_547486662 小时前
《Java程序设计与实践 》全套PPT课件2026
java·开发语言
MartinYeung52 小时前
[论文学习]ProAct:针对LLM越狱的主动防禦框架
网络·学习·安全
土司大王3 小时前
LeetCode hto100——字母异位词分组
java·算法·leetcode
发量惊人的中年网工3 小时前
中小企业网络管理进阶:从设备堆叠到统一管理
服务器·网络·安全·网络安全·php·制造
码匠许师傅3 小时前
【C++ 面试真题】聊聊 C++ 中的 lambda 表达式
java·c++·面试