nginx泛域名解析,实现多个二级域名

摘自:https://yq.aliyun.com/articles/44682php

 

利用nginx泛域名解析配置二级域名和多域名,实现二级域名子站,用户个性独立子域名。css

主要针对用户独立子域名这种状况,不可能在配置里面将用户子域名写完,所以须要经过nginx泛解析方式。html

配置方法:nginx

server_name ~^(?<subdomain>.+)\.yourdomain\.com$;

经过匹配subdomain便可。而在下面的能够经过$subdomain这个变量获取当前子域名称。dom

状况一:绑定子域名到统一目录,做为用户个性域名

这种状况下,只须要直接匹配就能够了,目录都是指向同一个地方的(通常)。网站

配置实例:url

server {

    listen   80;
    server_name yourdomain.com www.yourdomain.cpm ~^(?<subdomain>.+)\.m\.yourdomain\.com$;

    index index.php index.html index.htm;
    set $root_path '/var/www/yanue.net';
    root $root_path;

    try_files $uri $uri/ @rewrite;

    location @rewrite {
        rewrite ^/(.*)$ /index.php?_url=/$1;
    }

    location ~ \.php {
            fastcgi_pass   127.0.0.1:9000;
    }

    location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
        root $root_path;
    }

    location ~ /\.ht {
        deny all;
    }
}

 

这样能够实现:spa

user.m.yourdomain.com 跳转到用户本身页面.net

固然跳转逻辑须要本身在程序里面去实现。code

状况二:绑定子域名到不一样目录(子站)

网站的目录结构为

html
├── bbs
└── www

 

html为nginx的安装目录下默认的存放源代码的路径。

bbs为论坛程序源代码路径

www为主页程序源代码路径

把相应程序放入上面的路径经过

http://www.youdomain.com 访问的就是主页

http://bbs.yourdomain.com 访问的就是论坛

其它二级域名类推。

配置实例:

server {
        listen       80;
        server_name  ~^(?<subdomain>.+)\.yourdomain\.com$;
        root   html/$subdomain; 
        index  index.html index.htm index.php;
        fastcgi_intercept_errors on;
        error_page  404      = /404.html;
        location / {
                # This is cool because no php is touched for static content.
                # include the "?$args" part so non-default permalinks doesn't
                # break when using query string
                try_files $uri $uri/ =404;
       }

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  domain $subdomain;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
            deny  all;
        }
}
相关文章
相关标签/搜索