Faye-rails,ngnix,乘客从faye响应迟缓

我想创build一个简单的聊天。 我不是服务器pipe理的大师。 所以我有一个关于ngnix和faye的问题。

我使用ngnix +乘客为我的生产服务器。 我在digitalocean有一个液滴,并希望部署我的应用程序。 所以为了部署我使用官方的旅程教程https://www.phusionpassenger.com/library/install/nginx/install/oss/trusty/

对于模型callback,我使用faye-railsgem。 像faye-rails说,如果我使用乘客,我需要使用这种configuration

config.middleware.use FayeRails::Middleware, mount: '/faye', :timeout => 25, server: 'passenger', engine: {type: Faye::Redis, host: 'localhost'} do map '/announce/**' => SomeController end 

在我的发展localhost:3000聊天工程完美的快速。 但是当我部署它时,它的工作速度非常慢(响应时间在5到60秒之间)。 我不知道如何解决它。

在我的/etc/ngnix/sites-enabled/myapp.conf我使用这个configuration:

 server { listen 80; server_name server_ip; # Tell Nginx and Passenger where your app's 'public' directory is root /project_path_to_public; # Turn on Passenger passenger_enabled on; passenger_ruby /ruby_wrapper_path; } 

我需要升级我的/etc/ngnix/sites-enabled/myapp.conf以及如何? 或者我需要做什么?

我正在使用我正在开发的应用程序中的Faye和Redis。 这不是问题当前设置的直接解决方案,而是我已经实施的另一种方法。 下面是我的nginx配置,然后我通过服务器上的屏幕上的rackup运行Faye。

/etc/nginx/sites-enabled/application.conf:

 server { listen 80; listen [::]:80; server_name beta.application.org; # Tell Nginx and Passenger where your app's 'public' directory is root /var/www/application/current/public; # Turn on Passeger passenger_enabled on; passenger_ruby /usr/local/rvm/gems/ruby-2.2.1/wrappers/ruby; rails_env production; location ~* ^/assets/ { # Per RFC2616 - 1 year maximum expiry # http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html expires 1y; add_header Cache-Control public; add_header Last-Modified ""; add_header ETag ""; break; } } map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream websocket { server 127.0.0.1:9292; } server { listen 8020; location / { proxy_pass http://127.0.0.1:9292/push; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } 

这个链接应该提供一些关于它是如何工作的。 https://chrislea.com/2013/02/23/proxying-websockets-with-nginx/

您也可以参考Faye github,了解如何使用Passenger进行设置。

另外,如果你按照Digital Ocean教程进行初始服务器设置并启用防火墙,请确保允许运行Faye / websockets的端口。 (请参阅配置基本防火墙下的内容: 针对新的Ubuntu 14.04服务器的其他推荐步骤

我的替代方法涉及在服务器上单独的屏幕上运行Faye。 你将需要几个命令来管理Ubuntu服务器上的屏幕:

 screen -S <pick screen name> (new screen) screen -ls (lists screens) screen -r <screen number> (attach screen) to quit from a screen, ctrl + a THEN "d" (detach screen) 

一旦你有一个新的屏幕运行,使用rackup在该屏幕上运行Faye服务器: rackup faye.ru -s thin -E production

请注意,使用此选项,每次重新启动数字海洋服务器(即,如果您创建一个屏幕截图作为备份),您将需要创建一个新的屏幕并再次运行faye服务器; 然而,使用类似守护进程将是一个更好的实施,以规避这一点(我只是还没有实现呢…)。 转到Github并寻找FooBarWidget / daemon_controller。

让我知道如果你有任何其他问题,我会尽力帮助!