我正在尝试配置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_thumbnail.jpeg" failed (2: No such file or directory)
我在网上做了很多研究,但无法解决这个问题。
任何人都可以帮助我或者只是给我一些关于在Nginx中实现静态文件缓存的建议吗? 谢谢!
答案 0 :(得分:2)
同样,我必须回答我自己的问题。 根本问题在于“路径”。
我从@Dayo找到答案,我在这里引用:
您缺少图像位置块的rootdirective。 因此,nginx将在默认位置查找文件 因安装而异,因为您很可能没有放置 那里的文件,你会得到404 Not Found错误。
因此,我在配置文件中添加了根路径,如下所示:
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;
}
...
}
一切都很好。
我希望有同样问题的人可以从中吸取教训。