nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動匹配目錄的方法
nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動匹配目錄
用nginx可以實(shí)現(xiàn)虛擬主機(jī)的功能,可以綁定多個網(wǎng)址。
通常主域名都是寫死在配置里面的,所以要增加匹配時,需要手動添加。
基本寫法
最基本的寫法是server{
listen 80;
server_name www.a.com;
root /html/a;
…
}
server{
listen 80;
server_name www.b.com;
root /html/b;
…
}
正則式寫法
域名綁定后,自動匹配到相應(yīng)的目錄中,不需要一個一個域名去寫配置。
匹配目錄為:html/域名/二級域名,例如www.baidu.com會匹配到baidu.com/www目錄下
server {
listen 80;
# $subdomain 將匹配到二級域名級以上
# $domain 將匹配到一級域名
# $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ì)說了。
因為正則表達(dá)式的匹配優(yōu)先級最低,只有當(dāng)其他都匹配不到時才會進(jìn)行正則表達(dá)式的匹配,所以不用擔(dān)心影響其他的精確匹配。
一般人不會有那么多的域名要匹配,相反,是要屏蔽掉一些惡意的域名指向。
但是測試的時候,為了不影響正在運(yùn)行的網(wǎng)頁,可以在hosts中添中一條ip 域名記錄,用不存在的域名來測試,這時候就比較有用了。
總結(jié)
到此這篇關(guān)于nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動匹配目錄的文章就介紹到這了,更多相關(guān)nginx正則表達(dá)式泛域名匹配目錄內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信