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;
}
相关推荐
sx2436944 分钟前
day33:零基础学嵌入式之网络——TCP并发服务器
网络·网络协议·http
笠码5 分钟前
JVM Java虚拟机
java·开发语言·jvm·垃圾回收
thginWalker12 分钟前
八股文之JVM
java
Cyanto38 分钟前
MyBatis-Plus高效开发实战
java·开发语言·数据库
qhd吴飞41 分钟前
mybatis 差异更新法
java·前端·mybatis
YuTaoShao1 小时前
【LeetCode 热题 100】51. N 皇后——回溯
java·算法·leetcode·职场和发展
null不是我干的1 小时前
基于黑马教程——微服务架构解析(一)
java·微服务·架构
Bonnie_12151 小时前
04-netty基础-Reactor三种模型
java·nio·jetty
懂得节能嘛.1 小时前
【SpringAI实战】ChatPDF实现RAG知识库
java·后端·spring
探索java2 小时前
Spring 解析 XML 配置文件的过程(从读取 XML 到生成 BeanDefinition)
xml·java·spring·xmlbeanfactory