基于文件夹结构的dynamic虚拟主机设置

考虑到我有这样的事情:

/sites/foo/a1 /sites/foo/a2 /sites/foo/a3 /sites/bar/b1 /sites/bar/b2 

我想要像这样访问它们:

 foo.a1.mydomain.com 

或者(如果最后一个不起作用)

 foo-a1.mydomain.com 

我如何在nginx中dynamic创build虚拟主机,接受去那些文件夹?

这可以通过下面的nginx conf完成:

 server { listen 80; server_name mydomain.com *.mydomain.com; set $path "default"; if ($host ~* ^([a-z0-9-]+)\.([a-z0-9-]+)\.mydomain.com$) { set $path "$1/$2"; } root /sites/$path; } 

Nginx根据正则expression式中与$hostvariables匹配的分组来设置$pathvariables,这个variables是由nginx自动设置的(请参阅Embedded Variables )。 通过最初将$path设置$path “default”,可以在$host与regex不匹配的/sties/default/sties/default目录提供内容。

或者,您可以在server_name指令中使用正则expression式匹配。 有关更多信息,请参阅Nginx服务器名称 。