Conmi的正确答案——JAVA获取远程HTTP客户端访问的IP

JDK版本:17.0.5

Open-Resty版本(Nginx改版):1.25.3.1


nginx配置:

bash 复制代码
location /prod-api {
    # 允许最大10MB的文件上传
    client_max_body_size 10M;
    
    proxy_pass http://{反射到内部的IP/域名}:{反射到内部的接口};
    rewrite /prod-api/(.*) /$1 break;
    
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 主要是这个参数
    proxy_set_header X-Forwarded-Proto $scheme;
}

java代码:

java 复制代码
// import jakarta.servlet.http.HttpServletRequest;
// import org.springframework.web.bind.annotation.GetMapping;
// import org.springframework.web.bind.annotation.RestController;

@GetMapping("/getIp")
public String getIp(HttpServletRequest request) {
    String remoteAddr = "";
    if (request != null) {
        remoteAddr = request.getHeader("X-FORWARDED-FOR");
        if (remoteAddr == null || remoteAddr.isEmpty()) {
            remoteAddr = request.getRemoteAddr();
        }
    }
    return remoteAddr;
}
相关推荐
MY_TEUCK1 天前
【Java 后端】SpringBoot 登录认证与会话跟踪实战(JWT + Filter/Interceptor)
java·开发语言·spring boot
今天长肉了吗1 天前
银行风控项目踩坑实录:指标跑了6小时,风险评分全挂了
java
随读手机1 天前
多式联运信息交互平台完整方案(2026版)
java·ai·eclipse·云计算·区块链
许彰午1 天前
03-二叉树——从递归遍历到非递归实现
java·算法
nj01281 天前
Spring 循环依赖详解:三级缓存、早期引用、AOP 代理与懒加载
java·spring·缓存
野生技术架构师1 天前
2026年最全Java面试题及答案汇总(建议收藏,面试前看这篇就够了)
java·开发语言·面试
一只叫煤球的猫1 天前
ThreadForge 源码解读一:ThreadScope 如何把并发任务放进清晰边界?
java·面试·开源
洛_尘1 天前
Python 5:使用库
java·前端·python
古城小栈1 天前
封神!Rust 出品 HTTP 压测神器 cargo-whero,轻量碾压 JMeter、wrk,新手也能秒上手
jmeter·http·rust
程序员小假1 天前
HTTP3 性能更好,为什么内网微服务依然多用 HTTP2?HTTP2 内网优势是什么?
java·后端