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