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 小时前
奔图P2500NW打印机手机无线连接方法
运维·网络·windows·智能手机·计算机外设·电脑
menge23332 小时前
OSPF知识点整理
网络·智能路由器
大力财经2 小时前
周鸿祎:AI 时代安全智能体,能否重塑数字安全格局?
网络·安全
白帽程序员猫哥4 小时前
漏洞全讲解之中间件与框架漏洞(数字基础设施的“阿喀琉斯之踵“)
网络·安全·web安全·中间件·密码学·渗透
Spider_Man4 小时前
缓存策略大乱斗:让你的页面快到飞起!
前端·http·node.js
only_Klein5 小时前
harbor仓库搭建(配置https)
网络协议·http·docker·https·harbor
Crazy learner6 小时前
深入理解 C 语言中的拷贝函数
服务器·c语言·网络
景彡先生7 小时前
密码学分组模式详解:从ECB到GCM的进化之路
网络·密码学