這篇文章主要介紹Nginx中Location指令URI匹配規(guī)則的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)長清免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
1、介紹
location指令是http模塊當(dāng)中最核心的一項(xiàng)配置,根據(jù)預(yù)先定義的URL匹配規(guī)則來接收用戶發(fā)送的請(qǐng)求,根據(jù)匹配結(jié)果,將請(qǐng)求轉(zhuǎn)發(fā)到后臺(tái)服務(wù)器、非法的請(qǐng)求直接拒絕并返回403、404、500錯(cuò)誤處理等。
2、location指令語法
location [=|~|~*|^~|@] /uri/ { … } 或 location @name { … }
3、URI匹配模式
location指令分為兩種匹配模式:
1> 普通字符串匹配:以=開頭或開頭無引導(dǎo)字符(~)的規(guī)則
2> 正則匹配:以~或~*開頭表示正則匹配,~*表示正則不區(qū)分大小寫
4、location URI匹配規(guī)則
當(dāng)nginx收到一個(gè)請(qǐng)求后,會(huì)截取請(qǐng)求的URI部份,去搜索所有l(wèi)ocation指令中定義的URI匹配模式。在server模塊中可以定義多個(gè)location指令來匹配不同的url請(qǐng)求,多個(gè)不同location配置的URI匹配模式,總體的匹配原則是:先匹配普通字符串模式,再匹配正則模式。只識(shí)別URI部份,例如請(qǐng)求為:/test/abc/user.do?name=xxxx
一個(gè)請(qǐng)求過來后,Nginx匹配這個(gè)請(qǐng)求的流程如下:
1> 先查找是否有=開頭的精確匹配,如:location = /test/abc/user.do { … }
2> 再查找普通匹配,以 最大前綴 為原則,如有以下兩個(gè)location,則會(huì)匹配后一項(xiàng)
* location /test/ { … }
* location /test/abc { … }
3> 匹配到一個(gè)普通格式后,搜索并未結(jié)束,而是暫存當(dāng)前匹配的結(jié)果,并繼續(xù)搜索正則匹配模式
4> 所有正則匹配模式location中找到第一個(gè)匹配項(xiàng)后,就以此項(xiàng)為最終匹配結(jié)果
所以正則匹配項(xiàng)匹配規(guī)則,受定義的前后順序影響,但普通匹配模式不會(huì)
5> 如果未找到正則匹配項(xiàng),則以3中緩存的結(jié)果為最終匹配結(jié)果
6> 如果一個(gè)匹配都沒搜索到,則返回404
5、精確匹配與模糊匹配差別
location =/ { … } 與 location / { … } 的差別:
* 前一個(gè)是精確匹配,只響應(yīng)/請(qǐng)求,所有/xxx或/xxx/xxxx類的請(qǐng)求都不會(huì)以前綴的形式匹配到它
* 后一個(gè)是只要以 / 為前綴的請(qǐng)求都會(huì)被匹配到。如:/abc , /test/abc, /test/abc/aaaa
6、正則與非正則匹配
1> location ~ /test/.+.jsp$ { … } :正則匹配,支持標(biāo)準(zhǔn)的正則表達(dá)式語法。
2> location ^~ / { … } : ^~意思是關(guān)閉正則匹配,當(dāng)搜索到這個(gè)普通匹配模式后,將不再繼續(xù)搜索正則匹配模式。
... http { ... server { listen 80; server_name localhost; location / { root html; index index.html index.htm; # deny all; 拒絕請(qǐng)求,返回403 # allow all; 允許請(qǐng)求 } location /abc { deny all; } location ~ /.+\.jsp$ { proxy_pass http://location:9090; } # 匹配所有/test路徑下的jsp文件 location ~ /test/.+\.jsp$ { proxy_pass http://localhost:8080; } # 定義各類錯(cuò)誤頁 error_page 404 /404.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # @類似于變量定義 # error_page 403 http://blog.csdn.net; #這種定義不允許,需求利用@定義臨時(shí)變量來實(shí)現(xiàn) error_page 403 @page403; location @page403 { proxy_pass http://blog.csdn.net; } } }
以上是“Nginx中Location指令URI匹配規(guī)則的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站標(biāo)題:Nginx中Location指令URI匹配規(guī)則的示例分析
URL標(biāo)題:http://sd-ha.com/article6/iecoig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、動(dòng)態(tài)網(wǎng)站、App設(shè)計(jì)、響應(yīng)式網(wǎng)站、關(guān)鍵詞優(yōu)化、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)