在网站的 .conf 中,我尝试使静态文件缓存发挥作用。
当前具有用于缓存此内容的配置:
location ~ \.(?:jpg|jpeg|png|gif|ico|ttf|woff|map)$ {
expires 3d;
}
当我运行该网站时,它找不到任何这些图像,因为它正在查找/etc/nginx/html/css/
或/etc/nginx/html/img/
等等。
这不是正确的路径,就在这location / {...}
部分上方,我将路径设置为 root /websites/keyboardmastery/html;
。知道为什么它一直在查找/etc/nginx/*
文件而不是根路径吗?
答案1
将root
指令放在 location 块内并不是一个好的做法,因为你必须root
在每个 location 块内添加指令。如果 nginx 在 location 块或 server 块中找不到root
指令,它将通过将root
目录设置为--前缀路径当你编译它时。
摘录自nginx 陷阱
这有效。将其放入
root
位置块内即可,而且完全有效。问题在于您开始添加位置块。如果您将 添加root
到每个位置块,则不匹配的位置块将没有根。
解决方案是将root
指令移到位置块之外。您可以设置root
指定位置的指令来覆盖root
指令值。
server {
...
root /my/path;
location / {
...
}
location /img {
...
}
}