主頁 > 知識(shí)庫 > nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動(dòng)匹配目錄的方法

nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動(dòng)匹配目錄的方法

熱門標(biāo)簽:百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式 檢查注冊(cè)表項(xiàng) 網(wǎng)站建設(shè) 阿里云 硅谷的囚徒呼叫中心 智能手機(jī) 美圖手機(jī) 使用U盤裝系統(tǒng)

nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動(dòng)匹配目錄

用nginx可以實(shí)現(xiàn)虛擬主機(jī)的功能,可以綁定多個(gè)網(wǎng)址。
通常主域名都是寫死在配置里面的,所以要增加匹配時(shí),需要手動(dòng)添加。

基本寫法

最基本的寫法是server{
listen 80;
server_name www.a.com;
root /html/a;
…
}

server{
listen 80;
server_name www.b.com;
root /html/b;
…
}

正則式寫法

域名綁定后,自動(dòng)匹配到相應(yīng)的目錄中,不需要一個(gè)一個(gè)域名去寫配置。
匹配目錄為:html/域名/二級(jí)域名,例如www.baidu.com會(huì)匹配到baidu.com/www目錄下

server {
 listen 80;
 # $subdomain 將匹配到二級(jí)域名級(jí)以上
 # $domain 將匹配到一級(jí)域名
 # $tld 將匹配到根節(jié)點(diǎn)名
 server_name ~^((?<subdomain>.*)\.)?(?<domain>[^.]+)\.(?<tld>[a-zA-Z]+)$;

 #如果沒有$subdomain,則跳轉(zhuǎn)到www
 if ($subdomain = "") {
  # set $subdomain "_";
  set $subdomain "www";
  return 301 $scheme://www.$domain.$tld$request_uri;
 }

 root /usr/share/nginx/html/${domain}.${tld}/${subdomain};
}

其他

nginx 的匹配順序,搜索一下有很多文章,我就不詳細(xì)說了。
因?yàn)檎齽t表達(dá)式的匹配優(yōu)先級(jí)最低,只有當(dāng)其他都匹配不到時(shí)才會(huì)進(jìn)行正則表達(dá)式的匹配,所以不用擔(dān)心影響其他的精確匹配。

一般人不會(huì)有那么多的域名要匹配,相反,是要屏蔽掉一些惡意的域名指向。

但是測(cè)試的時(shí)候,為了不影響正在運(yùn)行的網(wǎng)頁,可以在hosts中添中一條ip 域名記錄,用不存在的域名來測(cè)試,這時(shí)候就比較有用了。

總結(jié)

到此這篇關(guān)于nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動(dòng)匹配目錄的文章就介紹到這了,更多相關(guān)nginx正則表達(dá)式泛域名匹配目錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標(biāo)簽:湖北 賀州 通遼 湘潭 山南 黃山 煙臺(tái) 懷化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動(dòng)匹配目錄的方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266