从 Rails 5 升级到 rails 6 后,ELB 目标组健康检查失败并显示 403

ELB Target groups health checks are failing with 403 after upgrading from Rails 5 to rails 6

ELB 目标组的健康检查失败,状态代码 403 在升级 rails 到 rails 6[=22= 后被禁止].但是,运行状况检查正在开发中运行,但不适用于 AWS 云。

健康检查成功 rails 5rails 6.

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

发生这种情况是因为 Rails 6 中的一项新功能:主机授权。它检查传入的请求是否具有正确的主机名,如果不正确,它 returns 403.

A​​WS ELB 在访问健康检查端点时没有设置 Host header,这导致它失败。

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

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