考虑到我有这样的事情:
/sites/foo/a1
/sites/foo/a2
/sites/foo/a3
/sites/bar/b1
/sites/bar/b2
我想像这样访问它们:
foo.a1.mydomain.com
或(如果最后一个不起作用)
foo-a1.mydomain.com
最佳答案
这可以通过以下Nginx conf来完成:
原文链接:https://www.f2er.com/nginx/435142.htmlserver {
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根据与$host变量匹配的正则表达式中的分组设置$path变量,该变量由Nginx自动设置(参见Embedded Variables).通过最初将$path设置为“default”,您可以在$host与正则表达式不匹配的情况下从/ sties / default目录提供内容.
或者,您可以在server_name指令中使用正则表达式匹配.有关详细信息,请参阅Nginx Server Names.