Nginx 使用具有不同文档根的try\u文件

Nginx 使用具有不同文档根的try\u文件,nginx,nginx-location,Nginx,Nginx Location,我知道在中有一个建议的解决方案,但它并不完全符合我试图实现的目标 我们正在将一个拥有100000页的大型旧Web服务器迁移到一个新的Web服务器。在此过程中,我们将更新内容。新内容的目录是从头创建的。在更新内容时,我们希望确保如果新文件夹中缺少某些内容,可以从旧文件夹中检索 我的简化文件夹结构如下所示: /mnt/oldcontent /var/opt/data/company/newcontent location / { try_files /var/opt/data/company/

我知道在中有一个建议的解决方案,但它并不完全符合我试图实现的目标

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

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

/mnt/oldcontent
/var/opt/data/company/newcontent
location / {
  try_files /var/opt/data/company/newcontent/$uri /mnt/oldcontent/$uri ...;
}
对于我们的场景,理想的解决方案是,如果我们可以这样做:

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

我知道这是无效语法。

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

由于
位置
只能服务于一个根,因此可以使用命名的
位置
来尝试另一个

例如:

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

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

有关详细信息,请参阅。

我想知道是否可以使用一个
服务器
级别
根目录
解决这个问题,我用一个新定义的
位置
级别
根目录
覆盖它,我在
try_files
中指定了类似
@oldcontentroot
的东西。非常感谢,这很有效。你告诉我我的想法(见上面的评论)并没有错;-)