nginx 缓存似乎无法与 django 配合使用

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文件夹,所以我猜测权限是正确的,并且当我重新启动 nginxnginx -s reload然后再重新启动时service nginx restart,我再也没有收到任何错误。

为什么在我的网站收到请求后,这些缓存目录中没有出现任何文件?

答案1

最有可能的是,您的 Django 应用程序返回不允许缓存页面的 HTTP 缓存标头。

如果您想忽略 Django 缓存标头,那么您可以使用以下命令:

proxy_ignore_headers X-Accel-Expires Expires Cache-Control;

相关内容