新技术论坛
搜索
查看: 691|回复: 0
打印 上一主题 下一主题

配置 Nginx 子域名的泛解析

[复制链接]
  • TA的每日心情
    开心
    2016-12-9 18:18
  • 签到天数: 85 天

    连续签到: 1 天

    [LV.6]常住居民II

    扫一扫,手机访问本帖
    楼主
    跳转到指定楼层
    发表于 2016-12-5 18:36:04 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    简单记录:

    需求描述

    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 变量。
    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    手机版|Archiver|开发者俱乐部 ( ICP/ISP证:辽B-2-4-20110106号 IDC证:辽B-1-2-20070003号 )

    GMT+8, 2025-1-9 07:11 , Processed in 0.096192 second(s), 18 queries .

    X+ Open Developer Network (xodn.com)

    © 2009-2017 沈阳讯网网络科技有限公司

    快速回复 返回顶部 返回列表