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;
}
相关推荐
用户9446814013503 分钟前
部分替代Lombok?不可变数据的载体?一篇文章带你了解JDK16正式引用的record类型!
java
用户0332126663675 分钟前
Java 高效处理 Word 文档:查找并替换文本的全面指南
java
轮到我狗叫了5 分钟前
力扣.1054距离相等的条形码力扣767.重构字符串力扣47.全排列II力扣980.不同路径III力扣509.斐波那契数列(记忆化搜索)
java·算法·leetcode
渣哥9 分钟前
你遇到过 ConcurrentModificationException 吗?其实很常见
java
Mysticbinary9 分钟前
BurpSuite 代理原理 和 证书钉扎检测技术
http·https·网络代理·代理·网络流量·websockets·证书钉扎
油泼辣子多加10 分钟前
HTTP 请求体格式详解
网络·网络协议·http
lunzi_fly11 分钟前
【源码解读之 Mybatis】【基础篇】-- 第1篇:MyBatis 整体架构设计
java·mybatis
JIngJaneIL26 分钟前
汽车租赁|基于Java+vue的汽车租赁系统(源码+数据库+文档)
java·vue.js·spring boot·汽车·论文·毕设·汽车租赁系统
渣哥41 分钟前
有一天,我和 CopyOnWriteArrayList 杯“线程安全”的咖啡
java
叽哥1 小时前
Kotlin学习第 3 课:Kotlin 流程控制:掌握逻辑分支与循环的艺术
android·java·kotlin