undertow-handlers.conf 中的规则将 HTTP 重定向到 HTTPS
Rule in undertow-handlers.conf to redirect HTTP to HTTPS
我在负载均衡器后面有一个 Wildfly,它们之间的连接始终是 HTTP。客户端和负载均衡器之间的连接可以是 HTTP 或 HTTPS。
负载均衡器设置了一个header(X-Forwarded-Proto)让Wildfly知道客户端使用的协议。
考虑到上述所有条件,我正在尝试编写一个 Undertow 规则以重定向到 HTTPS。
这是我比较成功的尝试之一(此规则写在 undertow-handlers.conf 文件中,并且是该文件中唯一的内容):
regex('/(.*)') and
regex(pattern='http',value='%{i,X-Forwarded-Proto}',full-match=true)->
redirect(https://server.com/)
当客户端尝试访问 url 时: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} 下)。
我在负载均衡器后面有一个 Wildfly,它们之间的连接始终是 HTTP。客户端和负载均衡器之间的连接可以是 HTTP 或 HTTPS。
负载均衡器设置了一个header(X-Forwarded-Proto)让Wildfly知道客户端使用的协议。
考虑到上述所有条件,我正在尝试编写一个 Undertow 规则以重定向到 HTTPS。
这是我比较成功的尝试之一(此规则写在 undertow-handlers.conf 文件中,并且是该文件中唯一的内容):
regex('/(.*)') and regex(pattern='http',value='%{i,X-Forwarded-Proto}',full-match=true)-> redirect(https://server.com/)
当客户端尝试访问 url 时: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} 下)。