【问题标题】:Use try_files with different document roots使用具有不同文档根的 try_files
【发布时间】:2018-10-04 15:03:15
【问题描述】:

我知道How to use try_files with 2 or more roots 中有一个建议的解决方案,但它不太适合我尝试实现的目标。

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

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

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

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

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

我知道这是无效的语法。

【问题讨论】:

  • 我想知道这是否可以通过server 级别root 来解决,我用新定义的location 级别root 覆盖,我在try_files 中指定了类似@987654329 的东西@

标签: nginx nginx-location


【解决方案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

【讨论】:

  • 非常感谢,这行得通。你向我展示了我的想法(见上面的评论)并没有那么错误;-)
猜你喜欢
  • 2017-02-11
  • 2021-03-19
  • 1970-01-01
  • 2019-01-27
  • 2017-01-17
  • 2016-04-21
  • 2020-10-09
  • 2011-08-23
  • 1970-01-01
相关资源
最近更新 更多