摘要:作為一名,配置是我們必會(huì)的技能項(xiàng)之一。只有請(qǐng)求的路徑與后面的字符串完全相等時(shí),才會(huì)命中。舉例表示該規(guī)則是使用正則定義的,區(qū)分大小寫。舉例匹配優(yōu)先級(jí)最后,我們了解下的查找規(guī)則。
作為一名PHPer,配置nginx是我們必會(huì)的技能項(xiàng)之一。但是當(dāng)用戶請(qǐng)求到達(dá)nginx之后,是如何匹配到對(duì)應(yīng)的配置項(xiàng)的呢?
location語(yǔ)法規(guī)則首先我們先了解下location的語(yǔ)法規(guī)則,location語(yǔ)法規(guī)則大致可以分為兩類
一類是指定URL地址:
location [ = | ~ | ~* | ^~ ] uri { ... }
另一類則是指定自定義名稱:
location @name { ... }
@name是對(duì)location設(shè)置的一個(gè)自定義名稱,由@+自定義命名組成,一般用于try_files后面的內(nèi)部請(qǐng)求,且自定義命名location中不可再嵌套自定義命名location
舉例:
location @xuzheng{ ... }location修飾符含義
上文我們提到location語(yǔ)法規(guī)則有一類是指定URL地址,其中運(yùn)用了一些修飾符,下面我們看下這些修飾符的含義
1、 = 表示精確匹配。只有請(qǐng)求的url路徑與后面的字符串完全相等時(shí),才會(huì)命中。
舉例:
location = / { ... }
2、 ~ 表示該規(guī)則是使用正則定義的,區(qū)分大小寫。
舉例:
location ~ .php$ { ... }
3、 ~* 表示該規(guī)則是使用正則定義的,不區(qū)分大小寫。
舉例:
location ~* .php$ { ... }
4、^~ 是前綴匹配的一種,但是如果該符號(hào)后面的字符被匹配上,則被默認(rèn)為最佳匹配,即采用該規(guī)則,不再進(jìn)行后續(xù)的查找。
舉例:
location ^~ /blogs { ... }location匹配優(yōu)先級(jí)
最后,我們了解下location的查找規(guī)則。下面列出的location查找,從上到下的優(yōu)先級(jí)為從高到低
1、等號(hào)類型,精確匹配
2、^~類型,前綴匹配,不支持正則,如果該符號(hào)后面的字符匹配被匹配上,則被默認(rèn)為最佳匹配,不再繼續(xù)往下查找
3、~和~*類型,正則匹配,~區(qū)分大小寫,~*不區(qū)分大小寫
4、前綴匹配類型,如location / {}(表示任何以/開(kāi)頭的URL都匹配)或location /user {},只不過(guò)找到合適了還會(huì)繼續(xù)往下找,直到找到最長(zhǎng)匹配
注:使用正則匹配的規(guī)則時(shí),順序很重要,location只要找到第一個(gè)符合條件的配置規(guī)則就會(huì)停止查找,即使下面有更匹配的配置
1、首先先檢查使用前綴匹配(即字符串匹配)定義的location,選擇最長(zhǎng)匹配的項(xiàng)并記錄下來(lái)
2、如果找到了精確匹配的location,也就是使用了=修飾符的location,結(jié)束查找,使用它的配置。如果沒(méi)有找到合適精確匹配,則繼續(xù)往下查找
3、如果找到了包含^~的前綴匹配,則停止查找,使用它定義的配置。如果沒(méi)有找到合適的帶^~符號(hào)的前綴匹配,則繼續(xù)往下查找
4、如果找到了使用正則定義的location,則停止查找,使用它定義的配置。如果沒(méi)有找到合適的正則匹配,則繼續(xù)往下查找
5、使用前面記錄的最長(zhǎng)匹配前綴字符location。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/40377.html
摘要:無(wú)論這個(gè)連接是外部主動(dòng)建立的,還是內(nèi)部建立的。協(xié)議有表示層數(shù)據(jù)的表示安全壓縮。在整個(gè)發(fā)展過(guò)程中的所有思想和著重點(diǎn)都以一種稱為的文檔格式存在。 部署基礎(chǔ)知識(shí)url:協(xié)議://網(wǎng)站地址:端口(/)路徑地址?參數(shù)eg: http://www.baidu.com:80/abc/dd/ www.baidu.com找服務(wù)器 80端口:找服務(wù)器上提供服務(wù)的應(yīng)用 nginx uri:/ab...
摘要:無(wú)論這個(gè)連接是外部主動(dòng)建立的,還是內(nèi)部建立的。協(xié)議有表示層數(shù)據(jù)的表示安全壓縮。在整個(gè)發(fā)展過(guò)程中的所有思想和著重點(diǎn)都以一種稱為的文檔格式存在。 部署基礎(chǔ)知識(shí)url:協(xié)議://網(wǎng)站地址:端口(/)路徑地址?參數(shù)eg: http://www.baidu.com:80/abc/dd/ www.baidu.com找服務(wù)器 80端口:找服務(wù)器上提供服務(wù)的應(yīng)用 nginx uri:/ab...
摘要:在本文中,我們繼續(xù)延續(xù)前文,從前文給出的一份示例配置清單開(kāi)始,詳解一下服務(wù)器的各種配置指令的作用和用法。是否允許同時(shí)接收多個(gè)網(wǎng)絡(luò)連接指令格式該指令默認(rèn)為狀態(tài),意指每個(gè)一次只能接收一個(gè)新到達(dá)的網(wǎng)絡(luò)連接。 showImg(https://segmentfault.com/img/remote/1460000015385948); 概述 在前面《Nginx服務(wù)器開(kāi)箱體驗(yàn)》 一文中我們從開(kāi)箱...
摘要:工作原理首先先了解下常聽(tīng)說(shuō)的,,,到底是什么關(guān)系,幫助了解的工作原理協(xié)議協(xié)議用來(lái)確定例如,也就是內(nèi)容分發(fā)服務(wù)器傳遞過(guò)來(lái)什么數(shù)據(jù),什么樣格式的數(shù)據(jù)進(jìn)程解釋器是的協(xié)議進(jìn)程解釋器,每次啟動(dòng)時(shí),需要經(jīng)歷加載文件初始化執(zhí)行環(huán)境處理請(qǐng)求返 php工作原理 首先先了解下常聽(tīng)說(shuō)的cgi,php-cgi,fastcgi,php-fpm到底是什么關(guān)系,幫助了解php的工作原理 cgi協(xié)議 cgi協(xié)議用來(lái)確...
閱讀 698·2021-09-22 10:02
閱讀 6660·2021-09-03 10:49
閱讀 624·2021-09-02 09:47
閱讀 2213·2019-08-30 15:53
閱讀 2983·2019-08-30 15:44
閱讀 981·2019-08-30 13:20
閱讀 1873·2019-08-29 16:32
閱讀 943·2019-08-29 12:46