我的 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
。