Nginx 动态位置路径配置

cloudgamer 阅读:22 2025-01-19 22:14:33 评论:0

首先,我想声明我对 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/; 
  } 
 
  ... 
} 

这工作正常,尽管对于我添加到现有站点的每个微型站点,它需要添加一个新的位置,指的是新微型站点的路径。

我的问题是:是否可以动态设置 location参数以捕获和引用 中存在的任何子目录的方式微型网站/目录?

例如符合重写规则的东西 rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last; (取自 nginx 站点)但适用于 location参数,如:
location ~ ^/microsite/(.*)$ { 
  try_files $uri $uri/ /microsite/$1/; 
} 

其中 $1将捕获在 (.*) 中传递的子目录名称?
(我尝试了我引用(另一个) Nginx dynamic location configuration 问题的答案构建的这个片段,尽管它不起作用)

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

无论如何,感谢所有帮助。
提前致谢!!

请您参考如下方法:

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

location ~ ^(/microsite/[^/]+) { 
    try_files $uri $uri/ $1/; 
} 
[^/]字符类匹配任何不是 / 的东西


标签:nginx
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号