1

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

rails 5的健康检查成功,但rails 6的健康检查失败。

任何帮助将不胜感激。

4

1 回答 1

1

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

AWS ELB 在访问健康检查端点时没有设置Host标头,这会导致它失败。

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

  config.hosts = ["example.org", IPAddr.new("10.0.99.0/24")]
于 2021-01-14T14:48:09.030 回答