我在负载均衡器后面有一个 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/ https://server.com/${1})
当客户端尝试访问如下 URL 时:http://server.com/myapp 被重定向到https://server.com,但是路径/myapp不见了。
如何修复 Undertow 规则以保留完整路径?
Try:
equals('http', %{SCHEME}) -> redirect(https://server.com/%U)
Or
equals('http', %{i,X-Forwarded-Proto}) -> redirect(https://server.com/%U)
取决于您是否在 HTTP 侦听器中启用了代理地址转发(如果您启用了 undertow,则会自动处理 X-Forwarded-Proto,以便它显示在 %{SCHEME} 下)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)