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)的原生支持
相关推荐
wWYy.1 天前
C++-集群聊天室(2):muduo网络库
网络·c++
珠海西格1 天前
远动通信装置为何是电网安全运行的“神经中枢”?
大数据·服务器·网络·数据库·分布式·安全·区块链
java干货1 天前
微服务:把一个简单的问题,拆成 100 个网络问题
网络·微服务·架构
LcVong1 天前
WPF MediaPlayer获取网络视频流当前帧并展示图片完整范例
网络·wpf
新缸中之脑1 天前
Moltbook:OpenClaw的社交网络
网络
岚天start1 天前
Python HTTP服务器添加简单用户名密码认证的三种方案
服务器·python·http
开开心心就好1 天前
键盘映射工具改键位,绿色版设置后重启生效
网络·windows·tcp/ip·pdf·计算机外设·电脑·excel
zhengfei6111 天前
MCP 将帮助防御者更努力、更智能地进行检测工程
网络
郝学胜-神的一滴1 天前
Linux Socket模型创建流程详解
linux·服务器·开发语言·网络·c++·程序人生
测试专家1 天前
AFDX与TSN的网关互联方案
网络