簡體   English   中英

Websocket連接失敗,nginx和faye

[英]Websocket connection failed with nginx and faye

我正在嘗試將聊天引入我的Rails應用程序。 為此,我使用了gem private_pub,它在開發模式下運行良好。

在生產中,我使用的是Apache + Passenger,但是無法使用它配置Faye,因此我將Apache更改為Nginx。 我的主要應用仍在Apache服務器上,該演示在Nginx上使用端口8080(僅用於測試)。

我可以通過輸入http://chat.mysite.com:8080/faye.js來連接到faye.js,但是來自應用程序的連接會引發錯誤(瀏覽器控制台)。

WebSocket與“ ws:// localhost:9292 / faye”的連接失敗:連接建立錯誤:net :: ERR_CONNECTION_REFUSED

發生此錯誤后,每5秒就會出現另一個錯誤。

faye.js:2 GET http:// localhost:9292 / faye?message =%5B%7B%22channel%22%3A%22%2Fmeta%2Fhands …22%2C%22callback-polling%22%5D%2C%22id %22%3A%221%22%7D%5D&jsonp = jsonp2 net :: ERR_CONNECTION_REFUSED

我的private_pub.yml

production:
  server: "http://localhost:9292/faye"
  secret_token: "mysecret"
  signature_expiration: 3600 # one hour

我的private_pub.ru

require "bundler/setup"
require "yaml"
require "faye"
require "private_pub"

Faye::WebSocket.load_adapter('thin')
PrivatePub.load_config(File.expand_path("../config/private_pub.yml", __FILE__), ENV["RAILS_ENV"] || "development")
run PrivatePub.faye_app

我的nginx site.conf

  server {
  listen 8080;
  server_name www.chat.mysite.com;
  passenger_enabled on;
  passenger_app_env production;

  root /var/www/mysite/public;

  location ^~ /faye {
     proxy_pass http://127.0.0.1:9292;
     proxy_http_version 1.1;
     proxy_set_header Host $host;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "Upgrade";
     proxy_buffering off;
     proxy_redirect off;
     proxy_connect_timeout      90;
     proxy_send_timeout         90;
     proxy_read_timeout         90;
     #proxy_set_header X-Forwarded-Proto https;
     proxy_cache_bypass $http_pragma $http_authorization;
     proxy_no_cache     $http_pragma $http_authorization;
     break;
    }  
 }

如果我將private_pub.yml更改為http://localhost:9292/faye/faye ,則會看到類似“無法加載資源/faye/faye.js”的錯誤。

如何更改Nginx conf或app yml以解決websocket錯誤?

我看到private_pub在設計上與ActionCable非常相似。 在您走太遠之前,您可能需要閱讀我的博客文章“ ActionAcable-優缺點 ”,因為它解決了諸如private_pub類的系統很好時(如果不是)的合適用例。

如果您當然已經意識到缺點,那么祝您好運!

我試圖按照@niceman的說明配置我的private_pub.yml。 現在一切正常。

production:
  server: "http://my-ip:8080/faye"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM