1

使用带有 private_pub gem 的 Nginx 1.6 这是我的配置文件:

private_pub.ru

# Run with: rackup private_pub.ru -s thin -E production
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

Private_pub.yml

development:
  server: "http://localhost:9292/faye/faye"
  secret_token: "secret"
test:
  server: "http://localhost:9292/faye/faye"
  secret_token: "secret"
production:
  server: "http://xxxxx.com/faye/faye"
  secret_token: "my secret token"
  signature_expiration: 3600 # one hour

在我的 Nginx.conf 中

location /faye {
    proxy_pass http://0.0.0.0:9292;
    break;
  }

该服务正在运行,但真的很慢,我在 safari 上遇到了这些错误:

WebSocket 连接到“ws://xxxxx.com/faye”失败:意外响应代码:400 加载资源失败:服务器响应状态为 404(未找到)加载资源失败:服务器响应状态为502错误的网关)

有什么想法吗?

4

1 回答 1

2

好的.. 我为那些想要在运行瘦和独角兽的 Nginx 上安装 Faye/Private_pub 的人找到了解决方案。

第一的:

  1. 您必须了解您的上游服务器是您的 localhost:9292 (127.0.0.1:9292)

您通过添加以下内容在 Nginx conf 中设置上游:

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 $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;
           break;


  }

同样对于那些之后有 504 的人,更改 Nginx 和 php.fmp 中的配置文件(如果有的话)以增加超时。

不要忘记重新加载你的 Nginx。如果您仍然有错误,请检查您的 Nginx error.log

于 2014-08-24T05:15:56.447 回答