nginx代理传递到不同域后设计会话

时间:2013-12-10 09:11:06

标签: ruby-on-rails session nginx devise proxy

目标是将mask_domain.com映射到masp.original_domain.com/something。为了实现这个目标,我为mask_domain.com设置了我的nginx,如下所示(这是一个rails应用程序):

server {
  listen 80;
  server_name mask_domain.com;

  location /assets {
     proxy_pass http://mask.original_domain.com/assets;
  }

  location /uploads {
    proxy_pass http://mask.original_domain.com/uploads;
  }

  location /something {
    proxy_pass http://mask.original_domain.com;
  }

  location / {
    proxy_pass http://mask.original_domain.com/something/;
  }
}

要验证我使用Devise。我无法登录,也没有看到任何cookie被设置。可能是因为:

  MyApp::Application.config.session_store :cookie_store, :key => '_my_app_session', :domain => :all

和for:domain => :它真的是'.original_domain.com'

我会感谢任何提示或帮助: - )

1 个答案:

答案 0 :(得分:1)

在我发布问题后,我开始考虑在nginx中重写cookie ...我解决了它:-) http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain

我刚刚添加到服务器块:

proxy_cookie_domain .original_domain.com .mask_domain.com;

现在会话持续存在跨域。