【发布时间】:2018-07-19 14:30:11
【问题描述】:
我有一个在 Docker 容器中运行的 Spring Boot 应用程序。容器暴露了 80 端口,尽管我有负载均衡器,它同时接受 HTTP 和 HTTPS 流量(并将两者都转发到容器的 80 端口)。
我遇到的问题是,尽管 HTTPS 有效,但在容器内运行的应用程序似乎认为所有流量都来自 HTTP,即使它确实可以访问原始请求 URL。我的意思是:如果我访问https://www.mycontainerapp.whatever,页面将会加载。但是,如果我转到任何触发重定向的 URL 路径,例如https://www.mycontainerapp.whatever/redirect-to-something-else,应用程序总是使用纯 HTTP 重定向到 http://www.mycontainerapp.whatever/redirect-target,丢失 HTTPS。
我承认我不一定知道我想写什么样的类的正确 J2EE 术语。也许它是一个过滤器,或者一个拦截器,或者一个连接器,或者一些其他类型的 Servlet 类。我计划做的只是编写一个类来检查原始请求是否以“https”开头,并确保最终的重定向 URL 也包含 https。我只是不确定正确的切入点是什么。我怎样才能“捕获”这样的重定向?
【问题讨论】:
-
NginX 可以帮你搞定nginx.com
标签: java spring docker servlets jakarta-ee