Advanced Tweak on Undertow-handlers.conf for http https redi



我在 AWS 负载均衡器后面使用 WildFly。 我希望 WildFly 中的 Undertow 服务器将 http 流量重定向到 https,并且我可以通过在 undertow-handlers.conf 中放置以下行来成功完成此操作:

equals('http', %{i,X-Forwarded-Proto}( -> redirect(https://app.server.com%U(

感谢这些人让我走到了这一步! 现在这是我想要的调整。 有时我使用"dev.server.com"在测试负载均衡器后面运行我的 Web 应用程序,有时我使用"app.server.com"在生产负载均衡器后面运行它。 目前,我必须记得在切换平衡器时手动编辑 undertow-handlers.conf。 我希望有一种方法可以将硬编码的"dev"和"app"更改为机械的东西。 有没有办法告诉Undertow只使用最初请求的域名?

谢谢。

值得庆幸的是,暗流配置允许您通过 Exchange 属性访问请求标头,您已经使用该属性访问X-Forwarded-Proto标头。因此,解决方案是简单地使用请求中的Host标头,如下所示:

equals('http', %{i,X-Forwarded-Proto}) -> redirect(https://%{i,Host}%U)

如果要将其保留为部署的一部分,请尝试在重定向表达式中使用%h。例如:

equals('http', %{i,X-Forwarded-Proto}) -> redirect(https://%h%U)

另一种选择是配置服务器以为您处理重定向。CLI 命令如下所示,假设默认端口为 http 的 8080 和 https 的默认端口为 8443。

/subsystem=undertow/configuration=filter/rewrite=http-to-https:add(redirect=true, target="https://%h:8443%U")
/subsystem=undertow/server=default-server/host=default-host/filter-ref=http-to-https:add(predicate="equals(%p, 8080)")

您可以在 Undertow 文档中查看所有可能的交换属性。

相关内容

  • 没有找到相关文章

最新更新