如何获取用户的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);
相关推荐
zopple9 小时前
四大编程语言对比:PHP、Python、Java与易语言
java·python·php
其实防守也摸鱼9 小时前
XSS漏洞全景解析:从原理、实战利用到纵深防御
前端·网络·安全·xss·xss漏洞
逍遥德9 小时前
Java 锁(线程间)和数据库锁(事务间)对比详解
java·数据库·sql·高并发·锁机制
路由侠内网穿透.9 小时前
本地部署开源客服系统 FreeScout 并实现外部访问( Windows 版本)
运维·服务器·网络·windows·网络协议
gwjcloud9 小时前
Docker详解
java·docker·容器
河阿里9 小时前
Java-JWT令牌技术深度指南
java·开发语言
你觉得脆皮鸡好吃吗9 小时前
Check Anti-CSRF Token (AI)
前端·网络·网络协议·安全·csrf·网络安全学习
WiChP10 小时前
【V0.1B6】从零开始的2D游戏引擎开发之路
java·log4j·游戏引擎
leaves falling10 小时前
C/C++ 的内存管理,函数栈帧详讲
java·c语言·c++
文静小土豆10 小时前
Java 应用上 K8s 全指南:从部署到治理的生产级实践
java·开发语言·kubernetes