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;
}
相关推荐
jyd01244 分钟前
MongoDB 与 Java 实体类型 LocalTime 时区转换问题解决方案
java·数据库·mongodb
一抓掉一大把26 分钟前
RuoYI框架.net版本实现Redis数据隔离
java·开发语言
.格子衫.30 分钟前
Maven高级
java·maven
lkbhua莱克瓦2430 分钟前
Java基础——常用算法4
java·数据结构·笔记·算法·github·排序算法·快速排序
.格子衫.33 分钟前
Maven前奏
java·pycharm·maven
Mos_x1 小时前
springboot系列--自动配置原理
java·后端
神奇侠20241 小时前
基于spring-boot-admin实现对应用、数据库、nginx等监控
java·数据库·nginx
一叶飘零_sweeeet1 小时前
手写 RPC 框架
java·网络·网络协议·rpc
脸大是真的好~2 小时前
黑马JAVAWeb-01 Maven依赖管理-生命周期-单元测试
java·maven
zhangkaixuan4563 小时前
Apache Paimon 查询全流程深度分析
java·apache·paimon