Я пытаюсь развернуть приложение Action Cable -enabled на VPS, используя Capistrano. Я использую Puma, Nginx и Redis (для кабеля). После пары препятствий я смог заставить его работать в местной среде разработки. Я использую URL-адрес по умолчанию для процесса/кабеля. Но, когда я пытаюсь развернуть его на VPS, я продолжаю получать эти две ошибки в JS-log:
Establishing connection to host ws://{server-ip}/cable failed.
Connection to host ws://{server-ip}/cable was interrupted while loading the page.
И в моем приложении nginx.error.log
я получаю следующие сообщения:
2016/03/10 16:40:34 [info] 14473#0: *22 client 90.27.197.34 closed keepalive connection
Включение ActionCable.startDebugging()
в JS-приглашении не представляет интереса. Просто ConnectionMonitor пытается повторно открыть соединение на неопределенный срок. Я также получаю нагрузку 301: постоянно переводится -requests для /cable в моем сетевом мониторе.
Что я пробовал:
- Использование адаптера
async
вместо Redis. (Это то, что используется в разработке env) -
Добавьте что-то вроде этого к моему
/etc/nginx/sites-enabled/{app-name}
:location /cable/ { proxy_pass http://puma; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; }
-
Настройка
Rails.application.config.action_cable.allowed_request_origins
на правильный хост (проверено "http://{server-ip}" и "ws://{server-ip}" ) - Включение
Rails.application.config.action_cable.disable_request_forgery_protection
Не повезло. Что вызывает проблему?
$ rails -v
Rails 5.0.0.beta3
Пожалуйста, сообщите мне о любых дополнительных деталях, которые могут быть полезны.