我在负载均衡器后面有一个Wildfly,它们之间的连接始终是HTTP。客户端和负载均衡器之间的连接可以是HTTP或HTTPS。
负载均衡器设置一个标头(X-Forwarded-Proto)让Wildfly知道客户端正在使用哪种协议。
考虑到上述所有条件,我尝试编写Undertow规则以重定向到HTTPS。
这是我更成功的尝试之一(此规则是在 undertow-handlers.conf 文件中编写的,它是该文件中唯一的内容):
正则表达式(' /(。*)')和 正则表达式(模式=' HTTP',值='%{I,X - 转发,原}'全匹配=真) - > 重定向(https://server.com/ $ {1})
当客户端尝试访问以下网址时: http ://server.com/myapp重定向到 https :// server.com,但路径 / myapp 丢失了。
如何修复我的Undertow规则以保持完整路径?
答案 0 :(得分:4)
尝试:
equals('http', %{SCHEME}) -> redirect(https://server.com/%U)
或者
equals('http', %{i,X-Forwarded-Proto}) -> redirect(https://server.com/%U)
取决于您是否在HTTP侦听器中启用了代理地址转发(如果您有下载将自动处理X-Forwarded-Proto,因此它显示在%{SCHEME}下)。