Django Nginx 浏览器缓存配置

标签 django caching nginx browser-cache django-staticfiles

我正在尝试配置 Nginx 以利用浏览器上的静态文件缓存。
我的配置文件如下

server {

    listen   80;
    server_name localhost;

    client_max_body_size 4G;

    access_log /home/user/webapps/app_env/logs/nginx-access.log;
    error_log /home/user/webapps/app_env/logs/nginx-error.log;

    location /static/ {
        alias   /home/user/webapps/app_env/static/;
    }

    location /media/ {
        alias   /home/user/webapps/app_env/media/;
    }
...
}

当我添加以下缓存配置时,服务器无法加载静态文件并且我无法重新启动我的 Nginx。
location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d;
}

nginx 错误日志显示 open() "/usr/share/nginx/html/media/cover_photos/292f109e-17ef-4d23-b0b5-bddc80708d19_t‌​humbnail.jpeg" failed (2: No such file or directory)
我在网上做了很多研究,但无法解决这个问题。

谁能帮助我或者只是给我一些关于在 Nginx 中实现静态文件缓存的建议?
谢谢!

引用:Leverage browser caching for Nginx

最佳答案

再次,我必须回答我自己的问题。
根本问题在于“路径”。

我从@Dayo 找到答案,我在这里引用:

You are missing the rootdirective for the images location block. Therefore, nginx will look for the files in the default location which varies by installation and since you have most likely not placed the files there, you will get a 404 Not Found error.



Answer from Dayo

因此,我在配置文件中添加了根路径,如下所示:
root /home/user/webapps/app_env/;

整个配置将如下所示:
server {

    listen   80;
    server_name localhost;

    root /home/user/webapps/app_env/;

    client_max_body_size 4G;

    access_log /home/user/webapps/app_env/logs/nginx-access.log;
    error_log /home/user/webapps/app_env/logs/nginx-error.log;

    location /static/ {
       alias   /home/user/webapps/app_env/static/;
    }

    location /media/ {
       alias   /home/user/webapps/app_env/media/;
    }

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
       expires 365d;
    }

...
}

一切都很好。

我希望有同样问题的人可以从中吸取教训。

关于Django Nginx 浏览器缓存配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27508683/

相关文章:

python - Django 自动转换日期时间属性

asp.net - 检查线程是否仍在运行

python - Django ORM 非常慢

python - Fresh Django Server,根据官方文档将 Zinnia 添加到项目中,但不起作用。里面很多细节

python - 如何避免用户在 Django 中注册已使用的电子邮件?

php - 缓存节点故障导致数据不一致

在 Laravel 5.5 中更新代码时,php artisan serve 被缓存或没有反应。重新启动后,它每次都会再次运行

redirect - 在不丢失反向链接的情况下进行 301 NGINX 重定向的正确方法

ruby-on-rails - 使用 Nginx 时的 Gem 资源文件

firefox - 对抗 Fuckip IP 匿名 FireFox 插件