nginx静态文件缓存使用错误路径

nginx静态文件缓存使用错误路径

在网站的 .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 {
        ...
    }

}

相关内容