ELB目标组在从Rails 5升级到Rails 6后,健康检查失败,出现403



ELB目标组的健康检查失败,状态代码403在将rails升级到rails 6后被禁止。然而,健康检查正在开发中,但没有在AWS云上进行。

使用rails 5可以成功进行健康检查,但使用rails 6则无法成功。

如有任何帮助,我们将不胜感激。

这是因为Rails 6中的一个新特性:主机授权。它检查传入请求是否具有正确的主机名,如果没有,则返回403。

AWS ELB在访问健康检查端点时没有设置Host头,这使其失败。

您可以通过将web服务器内部IP(ELB使用内部IP访问它(添加到允许的主机来禁用该功能(config.hosts.clear(来解决问题,如下所示:

config.hosts = ["example.org", IPAddr.new("10.0.99.0/24")]

最新更新