Nginx 为所有子文件夹配置位置重写

Nginx 为所有子文件夹配置位置重写

这个问题在很多方面都源于前一个我问过这个问题,最后自己回答了。我在这里简要总结一下这个问题以及我的解决方案

  • 当尝试访问子文件夹中的文件时,我需要根据尝试访问的人执行不同的默认操作

氨基酸

  1. 一个“后台” Web 应用程序,如果文件存在,则传送该文件;如果文件不存在,则生成一个“存根”并回显
  2. 为了响应来自手机应用程序 OTH 的请求,我希望提供文件(如果存在),如果不存在则提供 HTTP 404

我解决的方案如下

  • 创建指向相关文件夹的符号链接,ln -s /path/to/folder /path/to/bo_folder其中符号链接上的前缀bo_代表后台
  • 当从应用程序获取文件时,只需尝试直接访问它们,因为/path/to/folder/file.name.extn在这种情况下 Nginx 将处理返回 404 或文件,因为它认为正确
  • 在后台套件中获取文件进行编辑时,请以以下方式访问它们/path/to/bo_folder/file.name.extn

以下 Nginx 配置块

location /path/to/bo_folder
{
 add_header Access-Control-Allow-Origin *;
 rewrite ^(.*)$ /path/to/folder/index.php?$1 last;
}

我现在试图找到一个更优雅的解决方案的问题是这个 - 我不只有一个这样的文件夹,而是有一系列这样的文件夹/path/to/folder_1, /path/to/folder_2... /path/to/folder_n

虽然我可以为每个这样的文件夹设置location块,但这样做很繁琐,而且容易出错。几乎可以肯定有一种方法可以更通用地在上一级文件夹中编写重写,即在文件夹中编写重写/path/to,而不是针对每个单独的子文件夹编写。

这里有一个小问题——我无法通过重写/path/to/index.php文件夹来处理这个问题,因为我需要发送回的存根内容根据内容所在的子文件夹而有很大不同。

我对 Nginx 配置的了解有限,因此无法完成此操作。该如何操作?

相关内容