考虑到我有这样的事情:
/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服务器名称 。