有了default_server福青,小張心里松了一口氣纸厉,不用擔(dān)心server_name寫(xiě)錯(cuò)而白跑一趟了连霉。但是要是Nginx沒(méi)有設(shè)置default_server呢挟纱?
老王:”如果沒(méi)有設(shè)置雕凹,那么我們?nèi)肟诔蹰_(kāi)始樟结,根據(jù)端口號(hào)8888找到的第一個(gè)就是默認(rèn)default_server“。
_代表無(wú)效的域名易结,不會(huì)與任何真實(shí)的server_name相交枕荞。”“匹配沒(méi)有傳遞Host頭信息的請(qǐng)求搞动。
server {
server_name "";
# List port
listen 9999;
location / {
return 200 $hostname;
}
}
返回結(jié)果:192.168.0.102躏精,個(gè)人的ip地址。
還可以多個(gè)域名鹦肿,ip矗烛,當(dāng)然無(wú)法使用server_name來(lái)匹配所有的名稱(chēng),這是剛才講過(guò)的listen的屬性箩溃。
server {
listen 80;
server_name wyc.com
www.wyc.com
""
192.168.1.1
;
...
}
原來(lái)還有這么多種方式瞭吃,那么正則也講講吧。
表示區(qū)分大小寫(xiě)的匹配涣旨,表示不區(qū)分大小寫(xiě)的匹配正則表達(dá)式以^開(kāi)始歪架,$結(jié)束。點(diǎn).代表除換行符以外的任意字符霹陡,\d匹配數(shù)字等和蚪。這些知識(shí)匹配一個(gè)字符或者數(shù)字,當(dāng)匹配多個(gè)時(shí)穆律,通過(guò)重復(fù)來(lái)解決惠呼,表示重復(fù)零次或者多次,+表示重復(fù)一次或者多次峦耘,?表示重復(fù)零次或者一次,{n}表示重復(fù)n次旅薄,{n,} 表示重復(fù)n次或者更多次辅髓,{n,m}表示重復(fù)n次到m次泣崩。
這種正則表達(dá)式還可以幫我們提取一些變量,用小括號(hào)表示()洛口,多個(gè)小括號(hào)里提取出來(lái)的變量分別用2,$3...表示矫付,也可以自定義一個(gè)值表示,問(wèn)號(hào)加尖括號(hào)表示第焰,如下买优,
server {
server_name ~^(www\.)?(?<domain>.+)\.com$;
# List port
listen 8888;
location / {
return 200 $domain;
}
}
通過(guò)www.wyc.com:8888請(qǐng)求,$1表示**www. **而domain的值是wyc挺举。
附錄:
~ 為區(qū)分大小寫(xiě)的匹配
~* 不區(qū)分大小寫(xiě)的匹配(匹配firefox的正則同時(shí)匹配FireFox)
!~ 區(qū)分大小寫(xiě)不匹配
!~* 不區(qū)分大小寫(xiě)不匹配
. 匹配除換行符以外的任意字符
\w 匹配字母或數(shù)字或下劃線(xiàn)或漢字
\s 匹配任意的空白符
\d 匹配數(shù)字
\b 匹配單詞的開(kāi)始或結(jié)束
^ 匹配字符串的開(kāi)始
$ 匹配字符串的結(jié)束
- 重復(fù)零次或更多次前面一個(gè)字符
- 重復(fù)一次或更多次前面一個(gè)字符
? 重復(fù)零次或一次前面一個(gè)字符
{n} 重復(fù)n次前面一個(gè)字符{n,} 重復(fù)n次或更多次
{n,m} 重復(fù)n到m次
*? 重復(fù)任意次杀赢,但盡可能少重復(fù)
+? 重復(fù)1次或更多次,但盡可能少重復(fù)
?? 重復(fù)0次或1次湘纵,但盡可能少重復(fù){n,m}? 重復(fù)n到m次脂崔,但盡可能少重復(fù){n,}? 重復(fù)n次以上,但盡可能少重復(fù)
\W 匹配任意不是字母梧喷,數(shù)字砌左,下劃線(xiàn),漢字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非數(shù)字的字符
\B 匹配不是單詞開(kāi)頭或結(jié)束的位置
[^x] 匹配除了x以外的任意字符
[^abc] 匹配除了abc這幾個(gè)字母以外的任意字符
(exp) 匹配exp,并捕獲文本到9
(?<name>exp) 匹配exp,并捕獲文本到名稱(chēng)為name的組里铺敌,也可以寫(xiě)成(?'name'exp)(?:exp) 匹配exp,不捕獲匹配的文本汇歹,也不給此分組分配組號(hào)
(?=exp) 零寬斷言,匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
(?#comment) 注釋,這種類(lèi)型的分組不對(duì)正則表達(dá)式的處理產(chǎn)生任何影響,用于提供注釋讓人閱讀