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;
}
相关推荐
Pluchon7 小时前
硅基计划4.0 简单模拟实现AVL树&红黑树
java·数据结构·算法
2501_916008897 小时前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone
wxin_VXbishe7 小时前
C#(asp.net)学员竞赛信息管理系统-计算机毕业设计源码28790
java·vue.js·spring boot·spring·django·c#·php
一个网络学徒7 小时前
python5
java·服务器·前端
workflower7 小时前
业务需求-假设场景
java·数据库·测试用例·集成测试·需求分析·模块测试·软件需求
专注VB编程开发20年8 小时前
vb.net datatable新增数据时改用数组缓存
java·linux·windows
(>_<)8 小时前
java minio 分片上传工具类与测试demo
java·minio·分片上传
不想打工的码农8 小时前
MyBatis-Plus多数据源实战:被DBA追着改配置后,我肝出这份避坑指南(附动态切换源码)
java·后端
Coder_Boy_8 小时前
Deeplearning4j+ Spring Boot 电商用户复购预测案例
java·人工智能·spring boot·后端·spring
踢足球09298 小时前
寒假打卡:2026-2-7
java·开发语言·javascript