基于Nginx配置无限个二级域名


最近,遇到一个问题,希望通过一台主机,实现无限个域名访问,结合对nginx的了解,通过nginx解析带*的万能域名,实现不同的访问。以下我个人对这块的记录,希望对感兴趣的小伙伴有帮助!!!

一 、配置域名与解析

在域名解析时,配置解析的域名为不控制域名,可以参考如下配置(阿里云配置)

其中:主机记录为:*,表示可以匹配任何的二级域名

如:www.qyjsk.com blog.qyjsk.com ...

二、配置Nginx解析域名

打开Nginx目录,找到conf/nginx.conf

修改http 下面的server 配置项,配置如下

server {
    listen       80;
    server_name  *.qyjsk.com;#绑定域名,* 代表任何二级域名
  set $subdomain 'www'; #设置默认二级子目录为www

    #判断当二级域名不是www时,重新设置二级子目录名称,如blog.qyjsk.com ,则$subdomain的值为blog
    if ($host ~* (\b(?!www\b)\w+)\.\w+\.\w+) {
        set $subdomain $1;
    }
        
    #配置根路径访问
    location / {
        #当主机地址为www.qyjsk.com时,打开百度
        if ( $host = www.qyjsk.com ){
            rewrite /(.*) http://www.baidu.com permanent;
        }
        root  app/$subdomain; #对应nginx下app目录下的二级文件夹
        index index.html index.php; #默认访问index/index.html/index.php文件
    }
}

在nginx根目录下新建一个文件夹app(与nginx的conf目录同级),在app目录下新建一个文件夹,如下图

在blog文件夹下,添加一个index.html文件,内容如下



    
        "utf-8">
        
    
    
        

欢迎访问博客页面

三、测试

访问http://www.qyjsk.com网站时,地址已经由http://www.qyjsk.com改变成https://www.baidu.com

访问http://blog.qyjsk.com网站时,地址没有被重定向,默认访问了app/blog文件夹下的index.html文件

以上就是测试结果,也达到了预期目标,希望本文对大家有所帮助!!!