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。

相关推荐
paopaokaka_luck2 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
阿森_dev2 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
计算机毕业设计杰瑞2 小时前
【计算机毕设精品】基于SpringBoot的一体化教务与学业质量管理系统的设计与实现,附源码_增删改查_java项目_可完美运行部署_网站项目
java·spring boot·课程设计
大侠归来4 小时前
Spring Boot 2.1 → 3.5 迁移推演:从实战出发的完整路线图
java·spring boot·后端
Sweet锦5 小时前
jDCS 开源项目:面向工业现场的 Modbus RTU 数据采集基础框架
java·spring boot·物联网·开源
海马5 小时前
Spring Boot 开发知识整理
java·spring boot·后端
谢亮_vipxieliang5 小时前
Spring Boot 3.x 从零开始——环境搭建与第一个 REST 项目
java·spring boot·后端
FYKJ_20105 小时前
django个性化新闻推荐35173-计算机课程设计、毕业设计
java·spring boot·后端·python·架构·django·课程设计
今年下半年5 小时前
【消息队列】Spring Boot 集成 Kafka 消息队列:确保消费完成(手动提交偏移量+幂等判断+失败重试机制)
spring boot·kafka·幂等·失败重试
计算机毕设定制辅导-无忧学长5 小时前
《校园食堂在线订餐小程序的设计与实现》
java·vue.js·spring boot·微信小程序·uniapp·校园食堂在线订餐小程序