所以我试图设置一个使用Bryan Bate的private_pub gem(faye gem的包装)创建聊天频道的Rails应用程序。它在我的本地机器上以开发模式运行良好。faye private_pub rails ubuntu连接拒绝
我也正在同时我的Rails应用程序通过包括与线初始化文件开始启动了端口8080上private_pub服务器:
Thread.new do
system("rackup private_pub.ru -s thin -E production -p 8080")
end
然而,随着部署到AWS EC2 Ubuntu的实例后nginx网络服务器和美洲狮应用服务器,Chrome控制台每隔2秒就会显示一次,实时聊天功能不起作用。
GET http://localhost:8080/faye.js net::ERR_CONNECTION_REFUSED
如果我在AWS安全组打开8080端口,我可以看到JavaScript代码中使用curl从本地主机faye.js的大块:faye.js 8080 /当我使用SSH连接实例。如果我去http://my.apps.public.ip:8080/faye.js,我也可以从我的浏览器访问它。如果我从安全组中删除8080,我无法访问它,所以我不认为这是防火墙问题。另外,如果我将地址从本地主机更改为0.0.0.0或公共IP用于我的ec2实例,则Chrome控制台错误消失,但实时聊天仍不起作用。
我怀疑我可能要做更多的配置nginx的,因为所有到目前为止,我还做了配置nginx的服务器是在/ etc/nginx的/网站可用/默认情况下,我有:
upstream app {
server unix:/home/deploy/myappname/shared/tmp/sockets/puma.sock fail_timeout=0;
}
server {
listen 80;
server_name localhost;
root /home/deploy/myappname/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;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
但也许这与nginx无关,我很迷茫。有没有人遇到过这个问题,或者可以提出一个替代方案如果需要,我可以在这里发布任何其他配置文件。
我没有一个完整的答案,但我可以告诉部分问题是在nginx中使用'server_name localhost;'。 Chrome正在指出这是告诉客户端(你在这种情况下)连接到使用名称“localhost”,因此你得到了'GET http:// localhost:8080/faye.js net :: ERR_CONNECTION_REFUSED '因为你的浏览器试图连接到localhost:8080(你自己的计算机),因为你没有运行任何服务器,所以它拒绝连接。 请在这里寻找关于server_name的帮助:http://nginx.org/en/docs/http/server_names.html –
谢谢伊恩,我认为你是对的。你指出这一点后,我意识到,有时我看到铬的错误,其他时间我没有,因为我有时也有我的本地机器上运行的Faye服务器。我在本地启动我的主应用程序而不启动Faye服务器,然后看到相同的错误。所以现在我只需要为Faye服务器找到合适的Nginx配置。非常感谢! – ChaiTea
看起来您可以将其设置为您的AWS服务器的IP(如果它是静态的),或者如果您觉得疯狂'_'(下划线)是一个全面的。意味着任何连接(到端口80)都将被接受。这主要用于一台服务器可以托管多个网站,并且它们路由正确。我也刚刚注意到在启动时你告诉它使用8080端口,而你的配置只有80个设置,所以也有... –