![](/img/trans.png)
[英]Enforce https connection on Rails using AWS elastic beanstalk load balancer
[英]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有效:
接受答案的小提示:
如果您已從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:
如果您需要有關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.