技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> 配置 Nginx 子域名的泛解析

配置 Nginx 子域名的泛解析

浏览:950次  出处信息

   简单记录:

需求描述

   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 变量。

QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1