我在 Ubuntu 上的 Nginx/Passenger 上有一个 Rails 应用程序设置。最近我添加了在 Thin 上运行的 Faye,这需要在我的 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 错误。
我还尝试在 Nginx 中将 www.mydomain.com 重写为 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>
}