(转)配置 Nginx 子域名的泛解析

mqfcu 2014-12-01

文章信息

作者:Fwolf来源:Fwolf'sBlog

标签:泛解析

发布时间:2014-11-2023:44:34

地址:http://www.fwolf.com/blog/post/453

简单记录:

需求描述

Web服务器为Nginx,希望配置泛子域名解析。其实稍加修改,配置泛域名解析也不是难事。

不影响主域名,domain.com和www.domain.com的root依然为www目录

子域名sub.domain.com的root希望放在www-sub目录下,其他子域名同理

解决及分析

在Nginx的配置文件中做如下配置(示意):

server {
        server_name
            domain.com
            www.domain.com
            *.domain.com
        ;
 
        set $subdomain '';
        if ($host ~* (\b(?!www\b).+)\.domain.com) {
            set $subdomain -$1;
        }
 
        root    /home/user/www$subdomain/;
    }

解释:

首先,在定义server_name时使用通配符*,使Nginx接受任意子域名的访问。

然后,对$host进行分析,找到子域名的名称。这个正则表达式是在网上抄的,目的是为了在匹配子域名的同时,不匹配www开头的访问和不带www的访问。前面的set是因为Nginx的If没有Else,所以默认先将$subdomain置空。

最后,在定义root的时候,使用$subdomain变量。

相关推荐