Django/NGINX - ошибка проверки CSRF в production на устройстве с поддержкой 3g
Мое приложение django прекрасно работает на других устройствах с 4G-подключением. При попытке зарегистрироваться или войти в систему на устройстве с поддержкой только 3G возникает ошибка CSRF verification failed. Есть идеи, почему так происходит?
Я также использую Cloudflare для настройки/управления сервером доменных имен. Спасибо.
Я уже просмотрел файл настроек (в основном следуя документации), но не хочу ломать то, что уже работает.
Вот мой конфиг NGINX:
upstream app_server {
server unix:/tmp/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
client_max_body_size 4G;
# add here the ip address of your server
# or a domain pointing to that ip (like example.com or www.example.com)
server_name jovimifah.com www.jovimifah.com;
keepalive_timeout 5;
access_log /home/vickerdent/logs/nginx-access.log;
error_log /home/vickerdent/logs/nginx-error.log;
location /static/ {
root /home/vickerdent/shop-central;
}
# checks for static file, if not found proxy to app
location / {
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
}
Кроме того, CSRF_COOKIE_SECURE
и SESSION_COOKIE_SECURE
истинны.
Попробуйте добавить заголовок Referer
в конфигурацию nginx:
server {
...
location @proxy_to_app {
proxy_set_header Referer $http_referer;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
}