首先,我想说明我对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/;
}
...
}
这很好用,但是对于我添加到现有的每个微型网站,它需要添加一个新的位置来引用新微型网站的路径。 / p>
我的问题是:是否可以以捕获的方式动态设置location
参数,并引用 microsite / 目录?
e.g。重写规则rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
(取自nginx网站)的内容,但应用于location
参数,如:
location ~ ^/microsite/(.*)$ {
try_files $uri $uri/ /microsite/$1/;
}
$1
会捕获(.*)
中传递的子目录名吗?
(我尝试了这个我建立的片段,引用了(另一个)Nginx dynamic location configuration问题的答案,虽然它不起作用)
此外,我还不是一名正则表达专家,我过去曾对它进行过一些调整,但是不久之前,我不记得确切的术语,所以这可能是其中的一部分问题,也许?!
无论如何,所有的帮助都表示赞赏 在此先感谢!!
答案 0 :(得分:3)
您可能需要将捕获限制为前两个路径段:
location ~ ^(/microsite/[^/]+) {
try_files $uri $uri/ $1/;
}
[^/]
字符类匹配任何非/
答案 1 :(得分:0)
尝试以下方面的内容:
location ~ ^/microsite/(?<foo>.+)$ {
try_files $uri $uri/;
root /microsite/$foo;
}