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

前端之家收集整理的这篇文章主要介绍了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.

猜你在找的Nginx相关文章