nginx反向代理设置导致奇怪的access-control-allow-origin问题

时间:2013-05-14 14:07:39

标签: ruby-on-rails nginx passenger thin faye

我在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>
}

1 个答案:

答案 0 :(得分:0)

你知道你现在可以直接在Passenger上运行faye吗?无需介于两者之间。

检查出来:https://github.com/faye/faye-websocket-ruby#running-the-app-with-passenger