1

Я запускаю приложение рельсов на эластичном бобовом стебле, моя проблема в том, что я не могу использовать проверку состояния балансировки нагрузки, поскольку он проверяет через http, а не https. У меня config.force_ssl установлено значение true и не хочу его менять, поскольку это означает, что у меня есть 100% -ный охват ssl, HSTS и безопасные файлы cookie. У меня есть контроллер для проверки/работоспособности и доступ к нему через завиток. Кажется, существует противоречие между тем, что показано в эластичном бобовом стебле (EC2 Instance Health Check), где я могу только изменить путь и некоторые тайминги, а также проверить работоспособность в балансировщике нагрузки в EC2, где я могу изменить протокол ping , порт и путь к тому, что я хочу, но это, кажется, не имеет никакого эффекта, кроме возникновения ошибки 503.Рельсы на эластичном бобовом стебле, Не могу проверить состояние балансировки нагрузки

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

Выравниватель нагрузки имеет порты 80 и 443, но перенаправляет от 80 до 443 из-за force_ssl.

Кто-нибудь знает о правильных настройках, чтобы обойти это, так как я не смогу масштабировать приложение без него?

Спасибо

Имон

ответ

2

Способ сделать это, чтобы добавить к вашей конфигурации, как это.

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

Это в соответствии с рельсами документации и действует для Rails 5:

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

+0

Хороший ответ. Почему бы не отметить это как принято? – ferdynator

+0

Не понял, что я могу принять свой собственный ответ. Спасибо – etphoneshome

+0

Не могли бы вы разработать немного больше @etphoneshome? Должен ли я помещать файл в 'public', который подается на' myurl.com/health'? – Mosselman

0

Если, как мне вы не используете рельсов 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

0

принял ответ продолжал не работает для меня, но после часов отладки я нашел этот перл:

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

Он возвращает 200 на /healthcheck, который работает как шарм.

1

Небольшой намек на принятый ответ:

В случае, если вы обновили от Rails 4 до Rails 5, и поэтому в каталоге инициализаторов в new_frameworks_default.rb. Вам нужно удалить (или из-комментарий) следующую строку:

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

В противном случае ssl_options уже установлен.