redirect - undertow-handlers.conf 中的规则将 HTTP 重定向到 HTTPS

标签 redirect wildfly undertow

我在负载均衡器后面有一个 Wildfly,它们之间的连接始终是 HTTP。客户端和负载均衡器之间的连接可以是 HTTP 或 HTTPS。

负载均衡器设置一个 header (X-Forwarded-Proto),让 Wildfly 知道客户端正在使用哪个协议(protocol)。

我正在尝试编写一个 Undertow 规则来重定向到 HTTPS,同时考虑到上述所有条件。

这是我比较成功的尝试之一(此规则写在 undertow-handlers.conf 文件中,并且是该文件中唯一的内容):

regex('/(.*)') and regex(pattern='http',value='%{i,X-Forwarded-Proto}',full-match=true)-> redirect(https://server.com/${1})

当客户端尝试访问如下网址时:http://server.com/myapp 被重定向到 https://server.com,但路径/myapp 丢失。

如何修复 Undertow 规则以保留完整路径?

最佳答案

尝试:

equals('http', %{SCHEME}) -> redirect(https://server.com/%U)

或者

equals('http', %{i,X-Forwarded-Proto}) -> redirect(https://server.com/%U)

取决于您是否在 HTTP 监听器中启用了代理地址转发(如果您启用了 undertow,则会自动处理 X-Forwarded-Proto,以便它显示在 %{SCHEME} 下)。

关于redirect - undertow-handlers.conf 中的规则将 HTTP 重定向到 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37791759/

相关文章:

javascript - 使用 JavaScript 书签打开当前打开站点的新网页

.htaccess - 使用 .htaccess 将 www URL 重定向到 https 的非 www

java - 重定向不适用于 Https

java - 是否有兼容 Java 1.7 的 Artemis JMS 客户端?

java - 具有不同嵌入式服务器的 Spring Boot WAR 大小

error-handling - 使用Seedstack和Undertow管理错误处理

php - 如何在启动应用程序之前检查 Facebook 用户 ID 是否已经存在?

ssl - 出站 (!) SSL 连接 Wildfly

java - Intellij 错误运行 'JBoss Remote' : Unable to connect

jboss - Wildfly:意外元素 '{urn:jboss:domain:4.2}server'