Хобрук: Ваш путь к мастерству в программировании

Развертывание Rails с ActionCable в AWS Elastic Beanstalk с помощью ALB

Я пытаюсь развернуть приложение Rails 5.1.4 в AWS Elastic Beanstalk и не могу заставить ActionCable работать. Судя по журналам Rails, возникла проблема с обновлением HTTP-соединения до WebSocket:

I, [2017-11-29T20:53:23.533734 #6275]  INFO -- : [014bad33-65a1-489e-9108-dc4157965491] Started GET "/cable" for 24.192.57.23 at 2017-11-29 20:53:23 +0000
I, [2017-11-29T20:53:23.534481 #6275]  INFO -- : [014bad33-65a1-489e-9108-dc4157965491] Started GET "/cable/"[non-WebSocket] for 24.192.57.23 at 2017-11-29 20:53:23 +0000
E, [2017-11-29T20:53:23.534582 #6275] ERROR -- : [014bad33-65a1-489e-9108-dc4157965491] Failed to upgrade to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: close, HTTP_UPGRADE: )
I, [2017-11-29T20:53:23.534721 #6275]  INFO -- : [014bad33-65a1-489e-9108-dc4157965491] Finished "/cable/"[non-WebSocket] for 24.192.57.23 at 2017-11-29 20:53:23 +0000

Конфигурация Elastic Beanstalk использует ALB (не ELB), который должен работать с WebSockets из коробки.

Я пытался использовать ELB с TCP вместо HTTP, настройка обратного прокси-сервера nginx и изменение настроек приложения безуспешно. Кажется, существует консенсус по поводу обратного прокси, но я не могу правильно понять заклинание.

Пожалуйста помоги!


  • Используя комбинацию обратного прокси-сервера и изменения настроек приложения, соединение WebSocket теперь обновляется. 30.11.2017
  • Можете ли вы предоставить код в качестве примера? у меня такая же проблема сейчас 09.02.2018
  • @JuanFuentes я использовал тот же ответ, что и этот (stackoverflow.com/a/34693689/3439190), но обновил server_name на мой (т.е. создайте файл .ebextensions/nginx_proxy.conf с содержимым в соответствии с ответом), а затем я использовал ответ здесь (stackoverflow.com/ a/45463858/3439190), чтобы обновить файлы конфигурации моей среды (т. е. обновить config/environments/production.rb с кодом в ответе и с именем хоста моего сервера). это помогает? 13.02.2018

Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..