Подтвердить что ты не робот

Файлы cookie Django и сайты на нескольких портах

У меня есть несколько проектов Django, работающих на одном сервере, используя gunicorn и nginx. В настоящее время каждый из них настроен на работу на уникальном порту того же IP-адреса, используя директиву сервера в nginx. Все это прекрасно работает.

...
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
}
...

Я столкнулся с проблемой, когда у меня было 2 разных проекта, открытых на 2 вкладках, и я понял, что я не могу войти в оба сайта сразу (оба используют встроенную модель пользователя Django и auth). После проверки файлов cookie, сохраненных в моем браузере, я понял, что файл cookie связан только с доменным именем (в моем случае просто с IP-адресом), и он не включает порт.

На втором сайте я попытался изменить SESSION_COOKIE_NAME annd SESSION_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

Что мне нужно сделать, чтобы получить файлы cookie для обоих сайтов, работающих независимо?

4b9b3361

Ответ 1

Просто измените SESSION_COOKIE_NAME. SESSION_COOKIE_DOMAIN не поддерживает номера портов afaik. Поэтому для ваших приложений они одинаковы.

Ответ 2

Другим решением, которое не требует жесткого кодирования разных имен файлов cookie для каждого сайта, является запись промежуточного программного обеспечения, которое изменяет имя файла cookie на основе порта, в который был отправлен запрос.

Здесь простая версия (всего несколько строк кода).