Django Nginx 浏览器缓存配置
Posted
技术标签:
【中文标题】Django Nginx 浏览器缓存配置【英文标题】:Django Nginx Browser Caching Configuration 【发布时间】:2015-02-15 00:04:51 【问题描述】:我正在尝试配置 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-error 日志显示open() "/usr/share/nginx/html/media/cover_photos/292f109e-17ef-4d23-b0b5-bddc80708d19_thumbnail.jpeg" failed (2: No such file or directory)
我在网上做了很多研究,但无法解决这个问题。
谁能帮助我或者给我一些关于在 Nginx 中实现静态文件缓存的建议? 谢谢!
参考:Leverage browser caching for Nginx
【问题讨论】:
【参考方案1】:再次,我必须回答我自己的问题。 根本问题在于“路径”。
我从@Dayo 找到答案,我在这里引用:
您缺少图像位置块的根指令。 因此,nginx 将在默认位置查找文件 因安装而异,因为您很可能没有放置 那里的文件,你会得到一个 404 Not Found 错误。
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;
...
一切都很好。
希望有同样问题的人可以借鉴一下。
【讨论】:
感谢分享,但在生产中对我不起作用。它在我的本地生产环境中工作,但在真正的生产环境中,它不起作用。我表示文件扩展名已被缓存,但 nginx 实际上无法加载文件以设置我的页面样式。以上是关于Django Nginx 浏览器缓存配置的主要内容,如果未能解决你的问题,请参考以下文章