nginx代理出https,request.getRequestURL()得到http问题解决

问题:

Java Web 应用中 request.getRequestURL() 返回的 URL 协议是 http,但实际客户端是通过 https 访问的。

原因:

请求路径是:Client → HTTPS → Nginx (SSL Termination) → HTTP → java后端

  • Nginx 负责处理 HTTPS 解密(SSL 终止)。
  • 然后 Nginx 通过 HTTP 协议转发请求到后端 Java 应用(如 Tomcat)。
  • 后端 Java 应用看到的是 HTTP 请求,所以 request.getRequestURL() 返回 http://xxx
  • 但它不知道前端是通过 HTTPS 访问的。

解决方法:

1.Nginx 配置添加标准 Header

bash 复制代码
location /project/ {
        proxy_set_header Host $host:58090;
        proxy_set_header X-Real-IP $remote_addr;
		# 解决request.getRequestURL()请求地址不正确问题
		proxy_set_header X-Forwarded-Proto  $scheme;
		proxy_set_header X-Forwarded-Port $server_port;
		# 将客户端的来源页面信息传递给后端应用
		proxy_set_header Referer $http_referer;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://192.168.244.166:8086/project/;
   }

2.springboot项目添加以下配置

java 复制代码
# application.yml Spring Boot 2.1 及更早版本
server:
  use-forward-headers: true
# Spring Boot 2.2+
server:
  forward-headers-strategy: native  # 依赖容器(如 Tomcat)的原生支持
相关推荐
qq36219670522 分钟前
APK版本选择完全指南——beta/stable/arm64/x86/bundle/universal怎么选?
网络·人工智能
xhtdj25 分钟前
DuckDB Quack基于 HTTP的客户端 / 服务器协议面向多用户分析
服务器·网络协议·http
Steadfast_GG35 分钟前
详解HTTP中的URL
网络协议·http
李白你好38 分钟前
Burp Suite 自动注入 HTTP Header 的插件
网络·网络协议·http
梁辰兴1 小时前
计算机网络基础:具有集中目录服务器的 P2P 工作方式
服务器·网络·计算机网络·计算机·p2p·计算机网络基础·梁辰兴
艾莉丝努力练剑1 小时前
【Linux网络】网络层IP协议(二):网段划分
linux·运维·服务器·网络·tcp/ip·udp
InHand云飞小白1 小时前
告别有线宽带束缚!5G Wi-Fi 6 CPE赋能企业网络新范式
网络·5g·网络运维·5g路由器·连锁门店·5gcpe·商业联网
艾莉丝努力练剑1 小时前
【Linux网络】网络层IP协议(三):网段划分(下)
linux·运维·服务器·网络·tcp/ip
ZHW_AI课题组1 小时前
使用ResNet网络实现猫狗数据集分类
网络·分类·数据挖掘
霸道流氓气质1 小时前
SSL Socket 通信与本地 Mock Server 实践指南
网络·网络协议·ssl