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)的原生支持
相关推荐
宝塔面板2 小时前
AllinSSL 一站式搞定 SSL 自动续期:永久免费,开源可自托管
网络·网络协议·ssl
csdn今天倒闭了吗2 小时前
飞牛lucky配置ipv6 ddns+ssl+反向代理
网络·网络协议·ssl
强风7942 小时前
Linux-网络层
网络
独行soc3 小时前
2026年渗透测试面试题总结-19(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
_Johnny_3 小时前
ETCD 配额/空间告警模拟方案
网络·数据库·etcd
CHENKONG_CK3 小时前
晨控CK-LR08-E00与汇川H5U系列PLC配置MODBUSTCP通讯连接手册
linux·服务器·网络
天荒地老笑话么3 小时前
静态 IP 规划:掩码/网关/DNS 的正确组合
网络·网络协议·tcp/ip·网络安全
Tadas-Gao3 小时前
TCP粘包现象的深度解析:从协议本质到工程实践
网络·网络协议·云原生·架构·tcp
IOsetting3 小时前
金山云主机添加开机路由
运维·服务器·开发语言·网络·php
XiaoMu_0014 小时前
自动化漏洞扫描与预警平台
运维·网络·自动化