簡體   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