【发布时间】:2016-10-13 23:46:19
【问题描述】:
我在负载均衡器后面有一个 Wildfly,它们之间的连接始终是 HTTP。客户端和负载均衡器之间的连接可以是 HTTP 或 HTTPS。
负载均衡器设置一个标头 (X-Forwarded-Proto) 让 Wildfly 知道客户端正在使用哪个协议。
考虑到上述所有条件,我正在尝试编写一个 Undertow 规则以重定向到 HTTPS。
这是我比较成功的尝试之一(这条规则写在 undertow-handlers.conf 文件中,它是该文件中唯一的东西):
regex('/(.*)') 和 正则表达式(pattern='http',value='%{i,X-Forwarded-Proto}',full-match=true)-> 重定向(https://server.com/${1})
当客户端尝试访问如下网址时:http://server.com/myapp 被重定向到 https://server.com,但路径/myapp 丢失。
如何修复我的 Undertow 规则以保留完整路径?
【问题讨论】:
-
我真的不知道这条 Wildfly 规则(通过 Undertow 编写)来应用一些重定向,但我想猜测一下我在阅读您的问题时想到的一些事情:是“regex(' /(.*)')" 应该只匹配“相对路径”,否则它将匹配整个 URL(例如“server.com/some_endpoint)?
-
它只匹配相对路径,我在其他场景中使用过,效果很好。但这是我第一次使用带有 2 个正则表达式条件的谓词,我不知道这是否会成为问题。