将 Rails 升级到 rails 6 后,ELB 目标组的运行状况检查失败,状态代码为 403 禁止。然而,健康检查正在开发中运行,但在 AWS 云上不起作用。
健康检查在 rails 5 上成功,但在 rails 6 上失败。
任何帮助将不胜感激。
最佳答案
发生这种情况是因为 Rails 6 中的一项新功能:主机授权。它检查传入请求是否具有正确的主机名,如果不正确,则返回 403。
AWS ELB 在访问运行状况检查端点时未设置 Host
header ,这导致其失败。
您可以通过将 Web 服务器内部 IP(ELB 使用内部 IP 访问它)添加到允许的主机来禁用该功能 (config.hosts.clear
) 来解决该问题,如下所示:
config.hosts = ["example.org", IPAddr.new("10.0.99.0/24")]
关于amazon-elb - 从 Rails 5 升级到 Rails 6 后,ELB 目标组运行状况检查失败,返回 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63988780/