如何获取用户的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);
相关推荐
星恒讯工业路由器7 小时前
房车旅居不“断网”:移动生活如何实现全程在线?
网络·物联网·生活·工业路由器·车载工业路由器·房车通信·双卡备份
吴声子夜歌7 小时前
ApacheCommons——commons-text(模板替换与文本算法)
java·开发语言·算法·apache
Haooog7 小时前
Agent 开发中的 Memory:State、短期记忆、长期记忆与 Memory Retrieval
java·agent·memory
砚底藏山河7 小时前
【量化纯GET实战 #23】多股票相关性:用收益率看板块联动
java·数据库·python·金融·数据分析
抠脚小弟8 小时前
Spring Cache 使用详解:从入门到实战
java·spring
和裕8 小时前
光伏储能定制加强型瓦楞纸箱:降低组件运输隐裂率与售后损耗的核心价值
大数据·运维·网络·人工智能·算法
ZGG0038 小时前
MySQL 索引详解:B+ 树、聚簇索引与最左前缀
java·数据库·mysql
萧瑟余晖8 小时前
Java深入解析篇五十四之对象模型详解
java·开发语言
乐维_lwops8 小时前
网管系统:流量分析如何用“五元组”+“TOPN”透视网络异常?
网络·流量分析·网管系统
张文是假的啊8 小时前
Java | record | Controller逻辑
java·开发语言