Nginx代理SSL 到Spring boot

因为nginx 代理的 ssl请求, 所以使用request.isSecure() 无法获取正确的结果

有两个地方的原因:

nginx 代理没配置转发:

java 复制代码
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Scheme $scheme;

Spring boot 没开启配置

java 复制代码
server:
  # 端口
  port: 8080
  # 开启协议头
  forward-headers-strategy: native

为什么使用native请看资料

NATIVE (默认值,推荐)

含义: 依赖于底层内嵌的 Web 服务器(如 Tomcat 的 RemoteIpValve、Jetty 的 ForwardedRequestCustomizer、Undertow 的 ProxyHandler)来处理转发头。

何时使用: 这是推荐的方式,因为它将转发头的解析职责交给了 Web 服务器本身,通常性能更好,也更符合 Servlet 容器的规范。

注意: 如果使用 NATIVE,你仍然需要确保底层的 Web 服务器正确配置了信任代理的 IP 地址范围(例如 Tomcat 的 internalProxies)。

FRAMEWORK

含义: 使用 Spring Framework 自己的 ForwardedHeaderFilter 来处理转发头。这个过滤器会修改 HttpServletRequest 对象的属性。

何时使用: 当你使用自定义的 Web 服务器配置或者底层 Web 服务器不支持转发头处理时,可以考虑使用此选项。但通常不建议。

注意: 如果使用此选项,Spring Framework 的过滤器会处理头,而不是 Web 服务器的原生机制。

NONE

含义: 完全禁用 Spring Boot 和底层 Web 服务器对转发头的处理。

何时使用: 只有当你确定不需要处理任何转发头,或者你自己有自定义的、更高优先级的过滤器来处理这些头时才使用。

重要:如果您的 request.isSecure() 始终为 false,而 Nginx 配置正确,很有可能就是这个策略被无意中设置为了 NONE。

相关推荐
Pitayafruit4 分钟前
Spring AI 进阶之路05:集成 MCP 协议实现工具调用
spring boot·后端·llm
JIngJaneIL2 小时前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
q_19132846952 小时前
基于Springboot+MySQL+RuoYi的会议室预约管理系统
java·vue.js·spring boot·后端·mysql·若依·计算机毕业设计
VX:Fegn08954 小时前
计算机毕业设计|基于springboot + vue乡村振兴服务系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
何中应4 小时前
Bean的三种注入方式
开发语言·spring boot·后端·spring
Lucky_Turtle5 小时前
【Springboot】解决PageHelper在实体转Vo下出现total数据问题
java·spring boot·后端
老华带你飞5 小时前
志愿者服务管理|基于springboot 志愿者服务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring
汤姆yu5 小时前
基于springboot的宠物服务管理系统
java·spring boot·后端
利刃大大6 小时前
【SpringBoot】Spring IOC && DI && 五大注解 && Bean && 扫描路径 && 依赖注入
java·spring boot·spring
老华带你飞6 小时前
学生请假管理|基于springboot 学生请假管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·spring