nginx、uwsgi部署django中session丢失得问题

用nginx反向代理、uwsgi部署django的过程中,session可能在request中通过request.session.get()获取不到,其可能的原因有两种:

一、nginx反向代理的过程中,因为域名变化,可能会获取不到,需要将cookie的路径通过nginx也要反射出去。在nginx.conf做以下配置:

proxy_cookie_path / /;  # 主要为这里
proxy_set_header Host $host;
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie; 
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

二、session获取不到的第二个原因可能因为uwsgi进程无法拿到其他进程的缓存,需要确认django settings中sessio储存在缓存还是django_session中:

因为我的django settings 里设置的是使用缓存去保存session
不同的uWsgi进程无法拿到其他进程的缓存
设置django的session存储使用数据库或者缓存+数据库就可以

原文地址:https://www.cnblogs.com/wangyuxing/p/14482017.html