nginx – 基于文件夹结构的动态虚拟主机设置

考虑到我有这样的事情:

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

我想像这样访问它们:

foo.a1.mydomain.com

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

foo-a1.mydomain.com

如何在nginx中动态创建虚拟主机,以接受转到那些文件夹?
最佳答案
这可以通过以下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根据与$host变量匹配的正则表达式中的分组设置$path变量,该变量由nginx自动设置(参见Embedded Variables).通过最初将$path设置为“default”,您可以在$host与正则表达式不匹配的情况下从/ sties / default目录提供内容.

或者,您可以在server_name指令中使用正则表达式匹配.有关详细信息,请参阅Nginx Server Names.

dawei

【声明】:唐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。