Я пытаюсь развернуть сервер ActionCable и Rails 5 To Production (DigitalOcean). Я выполнил все шаги, упомянутые в видео Gorails здесь: https://gorails.com/episodes/deploy-actioncable-and-rails-5
Приложение было развернуто с использованием Phusion Passenger + Nginx + Capistrano.
И когда я попытался проверить свой сайт на производстве, я получил эту ошибку в консоли браузера:
WebSocket connection to 'ws://139.59.175.34/cable' failed: Error during WebSocket handshake: Unexpected response code: 404
Это мои настройки:
/ и т.д. / Nginx / сайты с поддержкой / по умолчанию
server {
listen 80;
listen [::]:80 ipv6only=on;
server_name my_server_domain;
passenger_enabled on;
rails_env production;
root /home/deploy/my_app_domain/current/public;
# ActionCabel config (disable this if u r not using it)
location /cable {
passenger_app_group_name actioncable_websocket;
passenger_force_max_concurrent_requests_per_process 0;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
production.rb
config.action_cable.url = "/cable"
config.action_cable.allowed_request_origins = ["http://139.59.175.34"]
cable.js
(function() {
this.App || (this.App = {});
App.cable = ActionCable.createConsumer("/cable");
}).call(this);
Я попытался изменить конфигурацию ActionCable на config/production.rb
на:
config.action_cable.url = [/ws:\/\/*/, /wss:\/\/*/]
config.action_cable.allowed_request_origins = [/http:\/\/*/, /https:\/\/*/]
но все равно не повезло.
Я также посмотрел в файле production.log на сервере, и эта ошибка была записана:
WebSocket error occurred: One or more reserved bits are on: reserved1 = 1, reserved2 = 0, reserved3 = 0
UPDATE:
Ниже приведены настройки брандмауэра на сервере: