0

我有一个使用 Puma 和 Nginx 1.10 部署到 vps 的聊天应用程序,我的 nginx 配置如下:

upstream websocket {
  server 127.0.0.1:28080;
}

server {
  location /cable {
    proxy_pass http://websocket/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
  }
}

这是我的电缆 config.ru 文件:

require ::File.expand_path('../../config/environment',  __FILE__)
Rails.application.eager_load!

ActionCable.server.config.disable_request_forgery_protection = true

run ActionCable.server

在环境/生产.rb

config.action_cable.allowed_request_origins = ['http://ahu.mydomain.ir', 'https://ahu.mydomain.ir']
config.action_cable.url = "ws://ahu.mydomain.ir/cable"

我的客户端通过代理服务器连接到 Internet,在 chrome 控制台中出现以下错误:

WebSocket 连接到“ws://ahu.mydomain.ir/cable”失败:通过代理服务器建立隧道失败

在另一个没有代理的客户端中,一切正常。

4

1 回答 1

0

幸运的是我找到了答案,我们应该将 SSL 添加到 VPS 并设置 Nginx 配置以通过端口 443 使用它。

要使用 SSL,我们应该在 Nginx .conf 文件中添加以下内容:

server {
        listen       443 ssl;
        server_name  YOUR_SERVER;
        ssl on;
        ssl_certificate /path/to/FILE.crt;
        ssl_certificate_key /path/to/FILE.key;
    }
于 2016-07-04T06:46:23.813 回答