将try_files与不同的文档根目录一起使用

时间:2018-10-04 15:03:15

标签: nginx nginx-location

我知道How to use try_files with 2 or more roots中有一个建议的解决方案,但它与我要达到的目标不太吻合。

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

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

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

对于我们的方案,理想的解决方案是是否可以执行以下操作:

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

我知道这是无效的语法。

1 个答案:

答案 0 :(得分:1)

您的解决方案需要将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