鄭州設(shè)計(jì)公司天津做優(yōu)化好的公司
一、location匹配的規(guī)則和優(yōu)先級(jí)(*)
URI:統(tǒng)一資源標(biāo)識(shí)符,是一種字符串標(biāo)識(shí),用于標(biāo)識(shí)抽象的或者是物理資源;如:文件、圖片、視頻等
nginx中的URI匹配的是:網(wǎng)址”/“后的路徑 如:…………/images/a.jpg
?location就是用來(lái)匹配URI的
匹配方式
匹配方式 | |
---|---|
1、精確匹配: | location = / {……} |
2、正則匹配: | location ~ / {……} |
3、一般匹配: | location / {……} |
匹配規(guī)則
匹配規(guī)則: | |
---|---|
= | 精確匹配,完全匹配,不能錯(cuò)誤一個(gè)字,必須要完全匹配 |
^~ | 匹配普通字符,前綴匹配 |
$~ | 結(jié)尾匹配 |
~???????? | 區(qū)分大小寫(xiě)的匹配 |
~* | 不區(qū)分大小寫(xiě)的匹配 |
!~ | 區(qū)分大小寫(xiě)的匹配,并且邏輯取反 |
!~* | 不區(qū)分大小寫(xiě)的取反 |
location匹配的原則:越精準(zhǔn),越匹配;同時(shí)優(yōu)先級(jí)越高
總結(jié):匹配的優(yōu)先級(jí)——>越精準(zhǔn),優(yōu)先級(jí)越高
location的優(yōu)先級(jí)
location =? :精確匹配??
location ^~ :前綴匹配
location ~* :? 正則匹配
location /xxx/ : 一般匹配的準(zhǔn)確匹配
location / : 一般匹配
注意:一旦匹配成功,后續(xù)將不再匹配
工作中的location匹配規(guī)則
一、第一個(gè) 必選規(guī)則
location = / { }
原因:直接匹配根網(wǎng)站。直接通過(guò)域名訪問(wèn)首頁(yè)是網(wǎng)站最常用的,直接使用精確匹配,可以加快處理,一般使用精確匹配處理的都是首頁(yè)
二、第二個(gè)規(guī)則
location ^~ /static/ { }
處理靜態(tài)文件的請(qǐng)求,目錄匹配 (static為自定義)
三、
location ~* \.(gif | jpg | png | css)
匹配圖片,但注意如果使用rewrite來(lái)指定后綴的類(lèi)型,要在location定義中移除,不然會(huì)陷入死循環(huán)
四、通用規(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的重定向
default_type text/plain;
表示如果沒(méi)有在其他地方顯示:content_type的頭字段,默認(rèn)響應(yīng)為text/plain純文本格式
text/html :默認(rèn)的響應(yīng)類(lèi)型,也就是頁(yè)面
text/plain :純文本格式,類(lèi)似.txt文件
text/css :css樣式的類(lèi)型:css
text/javascript:java腳本,.js。前端文件,也可以理解是iava解析的程序文件。
rewrite 執(zhí)行順序
1、執(zhí)行service模塊中的rewrite
2、執(zhí)行l(wèi)ocation中的匹配
3、如果location當(dāng)中還有rewrite,則會(huì)繼續(xù)執(zhí)行
注意:如果不停的rewrite,則只會(huì)循環(huán)執(zhí)行10次,10次過(guò)后進(jìn)行報(bào)錯(cuò),返回狀態(tài)碼:500
rewrite的語(yǔ)法
rewrite <regex(正則)> <replacement> [flag(標(biāo)志位)]
過(guò)程:
rewrite:開(kāi)始重定向
regex:正則匹配的規(guī)則
replacement :表示跳轉(zhuǎn)后內(nèi)容,要重定向的URL
flag:標(biāo)志位
? ? ? ? 標(biāo)志位分為四種:
? ? ? ? permanent :永久重定向、返回碼301 —— 永久性的變更URL,搜索引擎會(huì)轉(zhuǎn)移他的權(quán)重,以及排名,到新的URL
? ? ? ? redirect :臨時(shí)重定向,返回碼:302 —— 用于短期變更(網(wǎng)站維護(hù)、升級(jí)、更新),搜索,是不會(huì)轉(zhuǎn)移權(quán)重和排名
? ? ? ? ????????返回碼:304? ?指的是獲取的是本地緩存
? ? ? ? break :重定向,但是不會(huì)改變?cè)嫉腢RL,內(nèi)容會(huì)根據(jù)系統(tǒng)處理而顯示重定向后的內(nèi)容,并且只會(huì)請(qǐng)求一次,即刻跳出當(dāng)前匹配,立即終止
? ? ? ? last :表示本條匹配完成后,繼續(xù)向下匹配,只要有l(wèi)ast就會(huì)繼續(xù)進(jìn)行匹配,配置時(shí)需要注意,防止死循環(huán)
配置基于域名的跳轉(zhuǎn)
首先進(jìn)入nginx的配置文件 進(jìn)行修改
vim /usr/local/nginx/conf/nginx.confserver {listen 80;server_name www.zheng.cc;#charset koi8-r;#access_log logs/host.access.log main;location / {if ($host = 'www.zheng.cc') {rewrite ^/(.*)$ http://www.bai.com/$1 permanent;}root html;index index.html index.htm;}
}
在本地hosts文件中寫(xiě)入配置的地址
echo "20.0.0.40 www.zheng.cc www.bai.com" >> /etc/hosts
重啟nginx服務(wù)
systemctl restart nginx
測(cè)試:輸入配置的地址 www.zheng.cc 后回車(chē)
?會(huì)跳轉(zhuǎn)至配置的www.bai.com