我在Ubuntu上的Nginx / Passenger上设置了Rails应用程序。最近我添加了Faye在Thin上运行,这需要在我的Nginx配置中添加反向代理服务器设置。我设法让它工作,但设置非常奇怪:它只有在我从www.mydomain.com访问我的服务器并使用mydomain.com/faye上的Javascript代码访问反向代理时才有效。虽然我设法以这种方式访问Faye服务器,但Chrome浏览器控制台反复闪烁Access-Control-Allow-Origin错误,因此我知道这不是一个长期解决方案。这个错误对我来说很有意义,但经过多次尝试后我无法修复它。
XMLHttpRequest cannot load mydomain.com/faye. Origin www.mydomain.com is not allowed by Access-Control-Allow-Origin.
显而易见的解决方案是从www.mydomain.com和www.mydomain.com/faye访问,但这样做会导致502网关错误。如果我删除两个www,我也会收到502错误。
我还尝试将www.mydomain.com重写为Nginx中的mydomain.com,并从mydomain.com访问所有内容,但它仍无效。
下面是我删节的nginx.conf。非常感谢任何帮助!
http {
passenger_root <path_to_passenger_root>
passenger_ruby <path_to_passenger_ruby>
<abridged...>
upstream faye_server {
server 0.0.0.0:9292;
}
server {
listen 80;
server_name mydomain.com www.mydomain.com;
root <path_to_root>
passenger_enabled on;
<abridged...>
location /faye {
proxy_pass http://faye_server;
}
}
<Similar section for listening on port 443>
}
答案 0 :(得分:0)
检查出来:https://github.com/faye/faye-websocket-ruby#running-the-app-with-passenger