Nginx动态定位路径配置

Nginx dynamic location path configuration

首先我想声明我是nginx的新手,我基本上只知道我上周学到的东西。

也就是说,我目前有一个 Nginx 服务器,标准配置为:

server {
  listen 80;
  server_name site.com;

  root /var/www/site.com/;
  index index.php;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location /microsite/first {
    try_files $uri $uri/ /microsite/first/;
  }

  location /microsite/second {
    try_files $uri $uri/ /microsite/second/;
  }

  ...
}

这很好用,虽然对于每个 microsite 我添加到现有的,它需要添加一个新位置参考新 的路径微型网站.

我的问题是: 是否可以动态设置 location 参数,使其捕获并引用 [=37] 中存在的任何子目录=]microsite/ 目录?

例如沿重写规则 rewrite ^(/download/.*)/media/(.*)\..*$ /mp3/.mp3 last; 的内容(取自 nginx 站点)但应用于 location 参数,例如:

location ~ ^/microsite/(.*)$ {
  try_files $uri $uri/ /microsite//;
}

其中</code>会抓取<code>(.*)传入的子目录名? (我尝试了参考(另一个) 问题的答案构建的这个片段,尽管它没有用)

此外,我不是 Regex 专家,我过去对它进行了一些调整,但那是不久前的事了,我不记得确切的术语,所以这可能是问题的一部分,也许?!

无论如何,我们将不胜感激。
提前致谢!!

尝试以下方法:

location ~ ^/microsite/(?<foo>.+)$ {
    try_files $uri $uri/;
    root /microsite/$foo;
}

您可能需要将捕获限制在前两个路径段:

location ~ ^(/microsite/[^/]+) {
    try_files $uri $uri/ /;
}

[^/] 字符 class 匹配任何不是 /

的字符