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)的原生支持
相关推荐
1+2单片机电子设计1 天前
基于 STM32 的人脸识别系统
网络·人工智能
charlee441 天前
使用cpp-httplib发布HTTP服务
c++·http·json·cpp-httplib
代码游侠1 天前
复习——线程(pthread)
linux·运维·开发语言·网络·学习·算法
while(1){yan}1 天前
数据链路层与物理层
java·网络·网络协议
aml258__1 天前
一、Cisco( OSPF多区域与路由汇总技术实践:ABR优化网络路由表实验)251220
运维·网络·动态路由协议·网络优化·ospf多区域·abr·路由汇总
池央1 天前
IPIDEA赋能跨境电商:Amazon商品比价自动化采集实战
网络·自动化·php
Ms08067安全实验室1 天前
网络勒索攻击 之 如何快速应急响应(上)
网络
爱尔兰极光1 天前
计算机网络--IPv4地址
服务器·网络·计算机网络
Rover.x1 天前
Wireshark抓包分析工具
网络·测试工具·wireshark
TiAmo zhang1 天前
网络实例:移动网络
网络