【发布时间】:2017-10-02 00:44:05
【问题描述】:
每个人 :)。 我知道人们已经面临很多与我有关的问题。我已经尝试了所有但我的问题还没有解决。我过去 3 天一直在努力解决这个问题,但我无法做到。
我是第一次使用 ActionCable,在开发服务器上它运行良好。但是在我使用 Puma 和 Nginx 的生产环境中,我面临着可怕的问题。
最初,当我在 nginx 配置中没有(位置/电缆)设置时,服务器给我 404 握手错误
即 WebSocket 握手期间出错:意外响应代码:404然后在 nginx 配置中添加以下位置 /cable 配置后,我开始收到 502 bad gateway 错误。
注意:我没有专门为 ActionCable 打开任何端口。我认为这不是必需的。我的服务器上只打开了 80 端口。
我需要一些专家来帮助我解决这个问题。我需要快速帮助来修复它。在此先感谢:)
我的 environment/production.rb 中有这两行
config.action_cable.url = "ws://my_linode_domain/cable"
config.action_cable.allowed_request_origins = [/http:\/\/*/, /https:\/\/*/]
这是我的 nginx 配置文件
upstream app {
# Path to Puma SOCK file, as defined previously
server unix:/home/deploy/artcrate/shared/tmp/sockets/puma.sock fail_timeout=0;
}
server {
listen 80;
#server_name localhost;
server_name my_linode_domain
# prevents 502 bad gateway error
large_client_header_buffers 8 32k;
root /home/deploy/artcrate/current/public;
try_files $uri/index.html $uri @app;
location / {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Connection '';
proxy_pass http://app;
}
location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt {
gzip_static on;
expires max;
add_header Cache-Control public;
}
location /cable{
proxy_pass http://app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
我在 location /cable 设置中尝试了各种 proxy_pass 选项,但都没有奏效。
【问题讨论】:
标签: ruby-on-rails nginx ruby-on-rails-5 puma actioncable