東莞企業(yè)網(wǎng)站seo站長(zhǎng)工具seo綜合查詢收費(fèi)嗎
nginx配件location匹配的規(guī)則和優(yōu)先級(jí)(重點(diǎn)面試題)
RUI:統(tǒng)一資源標(biāo)識(shí)符,是一種字符串標(biāo)識(shí),用于標(biāo)識(shí)抽象的或者物理資源(文件,圖片,視頻)
nginx當(dāng)中:uri
www.ky30.com/images/1.jpg ——images/1.jpg (是uri)
location 就是用來(lái)匹配uri的:
1,精確匹配:location = / {...}
2,正則匹配:location ~ / {...}
3,一般匹配:location / {....}
匹配的規(guī)則:
= :精確匹配,完全匹配,錯(cuò)一個(gè)字都匹配不到,必須完全一致。
^~:匹配普通字符,前綴匹配
~$:結(jié)束位置
~:區(qū)分大小寫(xiě)的匹配
~*:不區(qū)分大小寫(xiě)的匹配
!~:區(qū)分大小寫(xiě)的匹配,取的邏輯非,取反
!~*:不區(qū)分大小寫(xiě),取反
location匹配原則:越精確,越匹配(優(yōu)先級(jí)越高)
= > ~ > /
精確匹配優(yōu)先級(jí)最高,正則第二,通用最后
優(yōu)先級(jí):
location = > location ^~ > location~* > location /test/ > location /
location = 最高優(yōu)先級(jí)
location ^~/images/ 正則,以什么為開(kāi)頭
location ~*\ .(jpg|png)$ 不區(qū)分大小寫(xiě),匹配以 .jpg或者.png結(jié)尾的uri優(yōu)先
location /test/ 通用完整路徑
location / 通用匹配
一旦匹配到了之后,不在向下匹配。優(yōu)先級(jí)根據(jù)精準(zhǔn)度,location匹配的是uri
生產(chǎn)中l(wèi)ocation匹配規(guī)則:
1,第一個(gè)必選按規(guī)則:
location = / {}
直接匹配根網(wǎng)站。通過(guò)域名訪問(wèn)網(wǎng)站首頁(yè)是最多的。使用精確匹配,可以加快處理速度。首頁(yè)。
2,第二個(gè)規(guī)則:
locaation ^~ /static/ {}
處理靜態(tài)文件的請(qǐng)求,目錄匹配。
3,location ~*.(gif|jpg|png|css),圖片匹配用
4,通用規(guī)則:
location / {
proxy_pass 指定代理,反向代理,轉(zhuǎn)發(fā)動(dòng)態(tài)請(qǐng)求。 .php.jsp的請(qǐng)求,發(fā)到后端。
}
rewrite:重寫(xiě),重定向
rewrite 使用nginx的群居變量或者是自己設(shè)置的變量,結(jié)合正則表達(dá)式和標(biāo)志位實(shí)現(xiàn)url的重定向
rewrite執(zhí)行順序:
1,執(zhí)行server塊當(dāng)中的rewrite
2,執(zhí)行l(wèi)ocation匹配
3,如果location當(dāng)中還有rewrite,繼續(xù)執(zhí)行
如果不停的rewrite,會(huì)進(jìn)入死循環(huán),10次之后報(bào)錯(cuò),報(bào)錯(cuò)狀態(tài)碼:500
rewrite的語(yǔ)法
rewrite <regex><replacement>[flag]
rewrite:開(kāi)始重定向
regex:正則匹配的規(guī)則
replacement:表示跳轉(zhuǎn)之后的內(nèi)容,你要重訂向的url
flag:標(biāo)志位
permanent:永久重定向
redirect:臨時(shí)重定向,顯示返回碼302
總結(jié):
永久重定向:301,永久性的變更url,搜索引擎會(huì)轉(zhuǎn)移他的權(quán)重以及排名到新的url
臨時(shí)重定向:302,用于短期變更(網(wǎng)站維護(hù),或者升級(jí)更新。)搜索引擎是不會(huì)轉(zhuǎn)移權(quán)重和排名到新的url
304:都是緩存,獲取本地緩存
break:是重定向,但是他不會(huì)改變url,而且只會(huì)請(qǐng)求1次。跳出當(dāng)前的匹配,即可終止。
last:本條的規(guī)則匹配完成后,繼續(xù)向下匹配,只要有l(wèi)ast',就繼續(xù)匹配。匹配的時(shí)候需要注意,防止死循環(huán)
rewrite or internal redirection cycle while processing #寫(xiě)成死循環(huán),一直在匹配location,10次,返回碼500。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? nginx的內(nèi)置變量:?
default_type text/plain; :表示如果沒(méi)有在其他地方顯示設(shè)置:content-type的頭字段,默認(rèn)響應(yīng)為text/plain;純文本格式
?
text/html:默認(rèn)的響應(yīng)類型,也就是我們說(shuō)的頁(yè)面
text/plain:純文本格式,類似于 .txt文件
text/css:CSS樣式表的類型, .css
text/javascript:java腳本,.js。前端文件,也可以理解是Java解析的程序文件。
小實(shí)驗(yàn):
基于域名跳轉(zhuǎn):
基于ip地址跳轉(zhuǎn):(頁(yè)面維護(hù)或者升級(jí))
###