用于缓存图像的 Nginx 正则表达式规则覆盖了根位置块

用于缓存图像的 Nginx 正则表达式规则覆盖了根位置块

我的 nginx 设置包含以下位置规则:

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

    location /data/ {
            root /mnt/data;
    }

问题是,当我尝试访问 /data/ 文件夹中的以下文件之一 (jpg | jpeg | png | gif | ico | css | js | pdf) 时,出现 404 Not Found 错误,因为第一个位置规则覆盖了第二个。我尝试做这样的事情:

    location ~* /data/.*\.jpg$ {
            root /mnt/data;
            expires 7d;
    }

但这似乎不起作用。您能帮我看看在这种情况下有什么解决方案吗?

答案1

解决方案是:

#1 规则重复

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

location /data/ {
    root /mnt/data;

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

#2 符号链接

您可以创建一个符号链接:$document_root/data -> /mnt/data

相关内容