Назад | Перейти на главную страницу

Кеширование nginx, похоже, не работает с django

У меня есть несколько приложений django, которые я хотел бы попробовать кэшировать с помощью NGINX. Я следовал этому руководству. https://www.nginx.com/blog/nginx-caching-guide/

Я использовал include директива для включения файла с этой строкой в http блок ...

proxy_cache_path /usr/share/nginx/cache levels=1:2 keys_zone=my cache:10m max_size=2g inactive=60m use_temp_path=off;

Затем я пошел в sites-enabled папку и добавил это в мои серверные блоки, это блоки ssl ...

server {

    listen 443 ssl;
    server_name example.com;

    ssl_certificate my/path/to/ssl;
    ssl_certificate_key my/path/to/ssl;

    client_max_body_size 4G;
    keepalive_timeout 5;

    # Your Django project's media files - amend as required
    location /media  {
        proxy_cache my_cache;
        alias /home/example/media;
    }

    # your Django project's static files - amend as required
    location /static {
        proxy_cache my_cache;
        alias /home/example/example/static_dump;
    }

    location / {
        #Next two lines added while developing includes only ip's in the file
        include /etc/nginx/ip-allow.conf;
        deny all;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_cache my_cache;
        proxy_pass http://app_server_example;
    }

Когда я проверяю путь к файлу кеша, я вижу, что он создал ./tmp папку, поэтому я думаю, что разрешения правильные, и когда я перезапустил nginx с nginx -s reload а потом позже service nginx restart Ошибок не было.

Почему бы в этих каталогах кеширования не отображались файлы после того, как на мой сайт были запросы?

Скорее всего, ваше приложение Django возвращает заголовки HTTP-кеширования, которые не позволяют кешировать страницы.

Если вы хотите игнорировать кеширующие заголовки Django, вы можете использовать это:

proxy_ignore_headers X-Accel-Expires Expires Cache-Control;