我将 AWS Elastic Beanstalk 与 Elastic Load Balancer (ELB) 后面的 EC2 服务器一起使用。
我在 ELB 上启用了“粘性会话”,因为这是让 django 用户会话正常工作的唯一方法。但是,在流量高峰期间,这会导致问题,因为 ELB 不再平均分配每个传入请求。这通常会像迷你 DDOS 一样使 1 台服务器过载。
我想做的是使用服务器端用户会话,其中用户身份验证信息存储在我的 Redis 缓存中。我试过设置SESSION_ENGINE
很多东西,比如:
SESSION_ENGINE = 'redis_sessions.session'
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
然后,当我关闭粘性会话时,我无法登录,因为请求最终会到达不同的服务器,其中一些请求经过身份验证,而另一些则没有。那些不是,将我重定向回登录页面。
以下是我拥有的其他一些相关设置:
INSTALLED_APPS = (
...,
'django.contrib.sessions',
...,
)
MIDDLEWARE_CLASSES = (
...,
'djangosecure.middleware.SecurityMiddleware',
...,
'django.contrib.sessions.middleware.SessionMiddleware',
...,
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
...,
)
我究竟做错了什么?非常感谢。