创建到子目录的位置路由

时间:2018-07-17 21:56:28

标签: nginx nginx-location

我想为我的项目创建一个预览 URL。每个用户在驱动器上都有一些目录(主目录),其中包含一个名为/docs/的文件夹。

当用户调用其URL(例如https://preview.example.com/microsoft/VisualStudioCode)时:

http(s)://preview.example.com/<company>/<project>/

我如何告诉 nginx ,他应该在内部将/docs附加到URL?

给出以下目录结构:

 - /opt
   - /users
     - <company>
       - <project>
       - <project>
     - /microsoft
       - /VisualStudioCode
         - /docs
         - /downloads
         - /temp
         - config.json

nginx的 DocumentRoot 默认为/opt/users/,而<company>/<project>作为真实目录存在。

如果用户打开URL,我如何创建Alias或其他配置来导航到/docs目录?

1 个答案:

答案 0 :(得分:0)

假设您的nginx.conf其余部分设置正确,则必须添加此服务器块:

server {
  server_name preview.example.com;
  root /opt/users;

  location / {
    try_files $uri/docs =404;
  }
}

如果您想从秘密docs目录中提供任何文件,则必须在位置栏中进行正则表达式,例如:

location ~ ^/(?<company>.+)/(?<project>.+)/(?<filepath>.+)$ {
  try_files /$company/$project/docs/$filepath =404;
}