nginx中的server_name指令主要用於配置基於名稱虛擬主機,server_name指令在接到請求後的匹配順序分別為:1、準確的server_name匹配,例如:
server
2、以*萬用字元開始的字串:
server
3、以*萬用字元結束的字串:
server
4、匹配到的正規表示式:
server
nginx將按照1,2,3,4的順序對server name進行匹配,只有有一項匹配以後就會停止搜尋,所以我們在使用這個指令的時候一定要分清楚它的匹配順序(類似於location指令)。
來個複雜的,這樣既可以匹配泛網域名稱,又可以匹配部分以blog開頭的網域名稱
兩個都是正則,優先順序一樣,哪個匹配的最精確就會匹配到哪個
#匹配*.frady.info
server_name ~^(.+)?\.frady\.info$;
#匹配blog*.frady.info
~^blog(.+)?\.frady\.info$;
以下是理所當然的寫法,其實是錯誤的,因為*會優先於正則,所以正則處寫的都匹配不到
#匹配*.frady.info
server_name *.frady.info;
#匹配blog*.frady.info
~^blog(.+)?\.frady\.info$;
你也可能寫出的是這樣的
#匹配blog*.frady.info
~*^blog(.+)?\.frady\.info$;
用regular expressions tester測試沒有問題,放到nginx裡,然後發現報錯了
後來才想到網域名稱其實是不區分大小寫的,所以這塊是不需要nginx來處理
官方的說明:
1.exact name
2.longest wildcard name starting with an asterisk, e.g. 「*.example.org」
3.longest wildcard name ending with an asterisk, e.g. 「mail.*」
nginx負載均衡中的server name
當nginx做負載均衡的時候,後端的nginx配置裡面有這麼一段配置 server listen 80 default server server name 官網上是這麼解釋的 在catch all server示例中,可以看到奇怪的名稱 這個名字沒有什麼特別之處,它只是無數無效網域名稱中的乙個,這...
nginx安裝和Vue部署nginx中
2 因為nginx以來與gcc的編譯環境,所以,在mini centos中需要安裝編譯環境來使nginx能夠編譯起來 yum install gcc c 3 nginx的http模組需要使用pcre來解析正規表示式 yum y install pcre pcre devel 4 依賴的解壓包 yum...
nginx中的if語句
if指令 格式 if 條件判斷 一 if語句中的判斷條件 nginx 1 正規表示式匹配 等值比較 與指定正規表示式模式匹配時返回 真 判斷匹配與否時區分字元大小寫 與指定正規表示式模式匹配時返回 真 判斷匹配與否時不區分字元大小寫 與指定正規表示式模式不匹配時返回 真 判斷匹配與否時區分字元大小寫...