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

Redirect undertow-handlers.conf中的规则将HTTP重定向到HTTPS,redirect,wildfly,undertow,Redirect,Wildfly,Undertow,我在负载平衡器后面有一个Wildfly,它们之间的连接总是HTTP。客户端和负载平衡器之间的连接可以是HTTP或HTTPS 负载平衡器设置一个报头(X-Forwarded-Proto),让Wildfly知道客户端正在使用哪个协议 考虑到上面的所有条件,我正在尝试编写一个引导规则来重定向到HTTPS 这是我比较成功的尝试之一(该规则写在undertow-handlers.conf文件中,并且是该文件中唯一的内容): 正则表达式('/(.*))和 正则表达式(pattern='http',value

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

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

考虑到上面的所有条件,我正在尝试编写一个引导规则来重定向到HTTPS

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

正则表达式('/(.*))和 正则表达式(pattern='http',value='%{i,X-Forwarded-Proto}',full match=true)-> 重定向(${1})

当客户端尝试访问类似以下url时:http://server.com/myapp被重定向到https://server.com,但路径/myapp丢失

如何修复我的下拖规则以保持完整路径?

尝试:

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


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

我真的不知道这个Wildfly规则(写在undertow上)可以应用一些重定向,但是我想猜一下,当我读到你的问题时,我脑海中出现了一个问题:“regex('/(.*)”应该只匹配“相对路径”还是匹配整个URL(例如“”)?它只匹配相对路径,我在其他场景中使用过它,它工作得很好。但这是我第一次使用带有2个正则表达式条件的谓词,我不知道这是否会有问题。
equals('http', %{i,X-Forwarded-Proto}) -> redirect(https://server.com/%U)