Django CSRF verification failed with nginx reverse proxy
Я в отчаянии.
У меня есть https-сервер, который перенаправляет трафик на мой локальный https-сервер. Мой университет использует обратный прокси, который перенаправляет запросы на мой nginx: Локальный https-сервер виден только через vpn. Они делают это для того, чтобы мне не нужно было заботиться об управлении ключами, и я могу просто подключить несколько общих.
Когда я на VPN, внешний сервер работает как ожидалось, но когда я выхожу из VPN, внешний сервер возвращает CSRF cookie not set
.
Я проверил практически все и прочитал все CSRF verification failed. Request aborted.
сообщения здесь.
Урл на внешнем сервере (анонимизированный):
- https://project.uni.edu/. url внутреннего сервера (анонимизированный):
- https://project_internal.uni.edux/ .
Конфигурация nginx:
server {
listen 443 ssl;
server_name project.uni.edu localhost;
ssl_certificate /code/staticfiles/cert/project_name.pem;
ssl_certificate_key /code/staticfiles/cert/project_name_key.pem;
location / {
proxy_pass http://web:8000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
}
location /static/ {
alias /code/staticfiles/;
}
location /media/ {
alias /code/mediafiles/;
}
}
Мои настройки в файле django следующие:
CSRF_TRUSTED_ORIGINS = ["https://project.uni.edu/","https://project_internal.uni.edux/"]
# SESSION_COOKIE_SECURE= True
CSRF_COOKIE_HTTPONLY = False
SESSION_COOKIE_DOMAIN= "project_internal.uni.edux"