Flask sub.domain.com会覆盖domain.com上的会话

时间:2015-02-10 13:44:14

标签: session nginx flask subdomain uwsgi

我有两个单独的服务器用于domain.com,另一个用于sub.domain.com,我使用flask-session存储会话并进行以下配置:

SERVER_NAME = 'domain.com'
SESSION_COOKIE_DOMAIN = ".domain.com"

# Flask-Session
SESSION_TYPE = 'redis'
SESSION_REDIS = Redis(host='192.168.10.10', port=6379, db=0)

我正在使用nginx使用反向代理,并且:

proxy_set_header Host $host;

当我在domain.com上登录时,一切正常,但是当我刷新sub.domain.com时,用户在domain.com上注销(sub.domain.com创建另一个会话并覆盖由domain.com创建的会话)。验证是通过flask-login完成的,它位于domain.com上(sub.domain.com只能获取它们)。

我不知道出了什么问题,我感谢你的帮助。

<小时/> 的更新

我尝试在没有uwsgi的情况下运行烧瓶并且它可以正常工作,但是当我使用uwsgi和nginx时问题仍然存在。我认为我的uwsgi或nginx配置有问题。

# uwsgi.ini
[uwsgi]
master = true
enable-threads = true
process   = 3
plugin    = python
socket = /tmp/name.sock
base = /var/www/app
chdir = %(base)
wsgi-file = %(base)/manage.py
callable = app


# nginx.conf
server {
    listen 8001;
    location / {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/name.sock;
    }
}

1 个答案:

答案 0 :(得分:0)

我错误认为它与我的反向代理或uwsgi无关。实际上它是反向代理的问题,我可以通过向nginx添加以下规则来解决我的问题:

    proxy_cookie_domain media.$host $host;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect false;