nginx配置多個(gè)二級(jí)域名(無限二級(jí)域名)

字號(hào):


    在nginx實(shí)現(xiàn)不限制二級(jí)域名,也就是說用*來解析一下域名,可以實(shí)現(xiàn)多個(gè)域名,二級(jí)域名甚至三級(jí)域名,四級(jí)域名都可以實(shí)現(xiàn),下面將配置說一下。
    首先確定是在server的配置項(xiàng)里面添加
    server
    {
    listen 192.168.79.129:80;
    server_name localhost,*.test.com;
    root /www/html
    index index.html index.htm;
    if ($host ~ ^(diannao|shouji|yinhang)\.test\.com$)
    {
    set $erji $1;
    rewrite ^(.*)$ /$erji$1 last;
    }
    location /
    {
    proxy_pass http://backend_server;
    }
    }
    上面的配置的意思說一下
    Listen是監(jiān)聽的端口號(hào)
    servername 是配置的域名,也就是從瀏覽器里面如何訪問,我這里定義的是二級(jí)無限域名*.test.com
    比如a.test.com b.test.com 都會(huì)訪問當(dāng)前的server
    root 是指訪問本地文件的路徑
    if ($host ~ ^(diannao|shouji|yinhang)\.test\.com$)
    {
    set $erji $1;
    rewrite ^(.*)$ /$erji$1 last;
    }
    如果host匹配上面三個(gè)名字的.test.com,則進(jìn)行rewrite的規(guī)則。
    set 是將if的正則匹配內(nèi)容給了$erji ,然后將$erji使用到下面的rewrite里面。
    last 是當(dāng)rewrite后不再進(jìn)行下面的規(guī)則匹配。
    假設(shè)當(dāng)前訪問的是diannao.test.com/forasp.html會(huì)直接rewrite到 /www/html/diannao/$1的路徑,這里的$1是實(shí)際請(qǐng)求url的參數(shù)在這里就是
    forasp.html.實(shí)際訪問的文件是/www/html/diannao/forasp.html
    然后實(shí)現(xiàn)多個(gè)二級(jí)域名配置,很簡(jiǎn)單
    if ($host ~ ^(.*)\.test\.com$)
    {
    set $erji $1;
    rewrite ^(.*)$ /$erji$1 last;
    }
    這樣就實(shí)現(xiàn)了無限個(gè)二級(jí)域名訪問了。