Django会话cookie和多个端口上的站点

j_s*_*syk 12 django cookies

我使用gunicornnginx在一台服务器上运行多个Django项目.目前,它们均配置为使用nginx中的server指令在同一IP地址的唯一端口上运行.这一切都很好.

...
server {
    listen 81;
    server_name my.ip.x.x;
    ... #static hosting and reverse proxy to site1
}
server {
    listen 84;
    server_name my.ip.x.x;
    ... #static hosting and reverse proxy to site2
}
...
Run Code Online (Sandbox Code Playgroud)

当我在2个标签中打开2个不同的项目时,我遇到了一个问题,我意识到我无法同时登录这两个站点(都使用内置的Django User模型和auth).在检查我的浏览器中保存的cookie时,我意识到cookie只绑定了域名(在我的情况下只是一个IP地址)并且它不包括端口.

在第二个网站上,我尝试更改SESSION_COOKIE_NAMESESSION_COOKIE_DOMAIN,但它似乎无法正常工作,并且使用这些当前设置我甚至无法登录.

SESSION_COOKIE_DOMAIN = 'my.ip.x.x:84'  #solution is to leave this as default
SESSION_COOKIE_NAME = 'site2'           #just using this works 
SESSION_COOKIE_PATH = '/'               #solution is to leave this as default

#site1 is using all default values for these
Run Code Online (Sandbox Code Playgroud)

如何为两个独立工作的网站获取Cookie需要做什么?

Ret*_*old 17

只需改变SESSION_COOKIE_NAME.在SESSION_COOKIE_DOMAIN不支持端口号AFAIK.所以他们的应用程序都是一样的.