繁体   English   中英

Elastic Beanstalk上的Rails,无法进行负载均衡器健康检查

[英]Rails on Elastic Beanstalk, Can't do a load balancer health check

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

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

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

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

谢谢

埃蒙

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

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

这是根据rails文档,并且对Rails 5有效:

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

接受答案的小提示:

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

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

否则ssl_options已设置。

如果像我一样你没有使用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

接受的答案对我来说不起作用,但经过几个小时的调试我找到了这个宝石:

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

它返回200 on /healthcheck ,就像魅力一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM