使用 try_files 不同的文档根目录

Use try_files with different document roots

我知道 中有一个建议的解决方案,但它不太适合我尝试实现的目标。

我们正在将具有 100,000 个页面的大型旧网络服务器迁移到新的网络服务器。在此过程中,我们更新内容。新内容的目录是从头开始创建的。当我们更新内容时,我们要确保如果新文件夹中缺少某些内容,可以从旧文件夹中检索到。

我的简化文件夹结构如下所示:

/mnt/oldcontent
/var/opt/data/company/newcontent

对于我们的场景,理想的解决方案是如果我们可以这样做:

location / {
  try_files /var/opt/data/company/newcontent/$uri /mnt/oldcontent/$uri ...;
}

我知道这是无效语法。

您的解决方案需要将 root 设置为文件系统的根目录。

由于 location 只能服务于单个根,您可以使用命名的 location 来尝试另一个。

例如:

root /var/opt/data/company/newcontent;

location / {
    try_files $uri $uri/ @oldcontent;
}
location @oldcontent {
    root /mnt/oldcontent;
    try_files $uri =404;
}

详情见this document