Nginx Location配置全過程
一、Location語法結(jié)構(gòu)
1、語法結(jié)構(gòu)說明
在Nginx官方文檔中定義的location語法結(jié)構(gòu)為:
location [ = | ~ | ~* | ^~ ] uri { ... }
其中uri變量是待匹配的請求字符串,可以是不包含有正則表達(dá)式的字符串,稱之為標(biāo)準(zhǔn)uri,也可以是包含正則表達(dá)式的字符串,稱之為正則uri。方括號里的部分為可選項,我們稱之為匹配標(biāo)識。
當(dāng)不添加匹配標(biāo)識時,Nginx服務(wù)器首先在server塊的各個location塊中搜索是否有標(biāo)準(zhǔn)uri和請求字符串匹配,如果有多個可以匹配,就記錄匹配度最高的一個。
然后,服務(wù)器再用location塊中的正則uri和請求字符串匹配,如果第一個正則uri匹配成功,結(jié)束搜索,并使用該location塊處理請求。如果所有正則匹配全部失敗,則用標(biāo)準(zhǔn)uri匹配到的匹配度最高的location塊進行處理。
2、各個標(biāo)識的含義和優(yōu)先級
=表示精確匹配,這個優(yōu)先級也是最高的。^~表示 uri 以某個常規(guī)字符串開頭,理解為匹配 url 路徑即可。nginx 不對 url 做編碼,因此請求為/static/20%/aa,可以被規(guī)則^~ /static/ /aa匹配到(注意是空格)。~表示區(qū)分大小寫的正則匹配。~*表示不區(qū)分大小寫的正則匹配。!~和!~*分別為區(qū)分大小寫不匹配及不區(qū)分大小寫不匹配的正則匹配。/通用匹配,任何請求都會匹配到,默認(rèn)匹配。
優(yōu)先級:精確匹配 > 正則匹配 > 通用匹配。
3、配置請求的根目錄
Web服務(wù)器接收到網(wǎng)絡(luò)請求后,首先要在服務(wù)器端指定目錄中尋找請求資源。在Nginx服務(wù)器中,root用來配置資源的根目錄,如下:
location /images {
root /nginx/images;
}
備注:當(dāng)訪問/images/1.jpg時,Nginx會在服務(wù)器上尋找路徑為/nginx/images/images/1.jpeg的文件。
4、替換請求的uri
通過root指令我們可以指定資源訪問的根目錄,但是我們會發(fā)現(xiàn)訪問的uri會附加到指定的文件目錄下。通過alias指定,我們可以在訪問服務(wù)器上資源時不保留訪問前綴,如下:
location /images {
alias /nginx/images;
}
備注:當(dāng)訪問/images/1.jpg時,Nginx會在服務(wù)器上尋找路徑為/nginx/images/1.jpeg的文件。
二、Location具體示例
1、精確匹配
location = /50x.html {
root /nginx/html;
}
備注:當(dāng)訪問/50x.html時,Nginx會在服務(wù)器上尋找路徑為/nginx/html/50x.html的文件。
2、正則匹配
location ~* ^/images/(.+\.(png|jpg|jpeg|gif))$ {
alias /nginx/images/$1;
}
備注:當(dāng)訪問/images/1.JPEG時,Nginx會在服務(wù)器上尋找路徑為/nginx/images/1.jpeg的文件,并且訪問路徑不區(qū)分大小寫。
3、常規(guī)字符串匹配
location ~^ /static//(.+\.(html|htm)){
alias /nginx/html/$1
}
備注:當(dāng)訪問/static/%20/index.html時,Nginx會在服務(wù)器上尋找路徑為/nginx/html/1.html的文件。
三、調(diào)試Location的小技巧
一般如果文件訪問失敗,在錯誤日志里能看到錯誤日志提示,如下:
2024/05/11 15:15:28 [error] 16746#0: *125484 open() "/nginx/images/jpeg" failed (2: No such file or directory), client: 113.116.81.20, server: xxx.com, request: "GET /images/1.jpeg HTTP/1.1", host: "xxx.com"
錯誤日志的默認(rèn)配置為:error_log logs/error.log error,也就是在logs/error.log文件中能看到相關(guān)錯誤提示,通過提示我們再進行配置的調(diào)整。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx配置網(wǎng)頁轉(zhuǎn)發(fā)的實現(xiàn)步驟
本文主要介紹了Nginx配置網(wǎng)頁轉(zhuǎn)發(fā)的實現(xiàn)步驟,實現(xiàn)將云服務(wù)器的80端口轉(zhuǎn)發(fā)到另一臺服務(wù)器部署的網(wǎng)頁,具有一定的參考價值,感興趣的可以了解一下2024-05-05
通過nginx反向代理來調(diào)試代碼的實現(xiàn)
這篇文章主要介紹了通過nginx反向代理來調(diào)試代碼的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
使用Nginx服務(wù)器如何實現(xiàn)動靜分離和反向代理
這篇文章主要介紹了使用Nginx服務(wù)器如何實現(xiàn)動靜分離和反向代理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05

