【问题标题】:Rails on Elastic Beanstalk, Can't do a load balancer health checkRails on Elastic Beanstalk,无法进行负载均衡器健康检查
【发布时间】:2017-02-09 01:31:08
【问题描述】:

我在弹性 beantalk 上运行 rails 应用程序,我的问题是我无法使用负载均衡器运行状况检查,因为它通过 http 而不是 https 进行检查。我将 config.force_ssl 设置为 true,并且真的不想更改它,因为这意味着我拥有 100% 的 ssl 覆盖率、HSTS 和安全 cookie。 我已经设置了一个控制器来检查 /health 并且可以通过 curl 访问它。 弹性beantalk(EC2实例健康检查)中显示的内容似乎存在矛盾,我只能更改路径和一些时间,而EC2中负载均衡器中的健康检查,我可以更改ping协议,我想要的端口和路径,但这似乎除了导致 503 错误之外没有任何影响。

Ping Protocol: https 
Ping Port: 443 
Ping Path: /health

负载均衡器打开了端口 80 和 443,但由于 force_ssl 而从 80 重定向到 443。

是否有人知道解决此问题的正确设置,因为没有它我将无法扩展应用程序?

谢谢

埃蒙

【问题讨论】:

    标签: ruby-on-rails amazon-web-services amazon-ec2 amazon-elastic-beanstalk


    【解决方案1】:

    这样做的方法是将其添加到您的配置中,就像这样。

    config.force_ssl
    config.ssl_options = { redirect: { exclude: -> request { request.path =~ /health/ } } }
    

    这是根据 rails 文档,适用于 Rails 5:

    http://api.rubyonrails.org/classes/ActionDispatch/SSL.html

    【讨论】:

    • 您能否详细说明@etphoneshome?我是否必须在public 中放入一个在myurl.com/health 提供的文件?
    • 这是一个解析到 Rails 控制器的路由,我在其中做了一个简单的检查以确保数据库连接处于活动状态。
    • 对于从以前的 rails 版本迁移到 rails 5 的项目,也请参阅此答案。 stackoverflow.com/a/43427302/312462
    【解决方案2】:

    接受答案的小提示:

    如果您已从 Rails 4 更新到 Rails 5,因此在您的初始化程序目录中有 new_frameworks_default.rb。您需要删除(或注释掉)以下行:

    Rails.application.config.ssl_options = { hsts: { subdomains: true } }
    

    否则ssl_options 已设置。

    【讨论】:

      【解决方案3】:

      接受的答案对我不起作用,但经过数小时的调试后,我发现了这个宝石:

      https://github.com/lserman/aws-healthcheck

      它在/healthcheck 上返回 200,这就像一个魅力。

      【讨论】:

        【解决方案4】:

        如果像我一样,您没有使用 rails 5,则可以执行此操作的另一种方法是禁用强制 SSL,并使用 NGINX 将所有流量强制到 https...您可以使用 ebextension 文件来执行此操作。您需要的确切版本直接来自 AWS:

        https://github.com/awslabs/elastic-beanstalk-docs/blob/master/.ebextensions/aws_provided/security%20configuration/https-redirect-ruby-puma.config

        如果您需要有关 ebextensions 的更多信息,可以在文档http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html 中找到它们

        编辑:原来的链接失效了……

        试试这个: https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/security-configuration/https-redirect/ruby-puma/https-redirect-ruby-puma.config

        【讨论】:

        • 链接失效了,包含相关代码的链接
        • @SiguMagwa - 感谢您的举报。我已经更新了新链接 - 希望对你有用。
        猜你喜欢
        • 2021-04-20
        • 2020-01-12
        • 2016-08-05
        • 2013-04-11
        • 1970-01-01
        • 2021-08-14
        • 2019-08-27
        • 2015-08-04
        • 2019-04-21
        相关资源
        最近更新 更多