詳解nginx?中l(wèi)ocation和?proxy_pass的匹配規(guī)則
我來詳細(xì)解釋 location 和 proxy_pass 的作用以及它們在你的例子中的含義。
location 的作用
location 是 Nginx 中用來匹配客戶端請求 URI 的指令,決定如何處理特定路徑的請求。它定義了請求的路由規(guī)則,后續(xù)的配置(如 proxy_pass)會應(yīng)用在匹配的請求上。
語法
location [修飾符] 匹配模式 {
# 配置塊
}- 修飾符:可選,比如
=(精確匹配)、~(正則匹配)等。 - 匹配模式:可以是具體路徑、正則表達(dá)式等。
示例:location /test
location /test {
proxy_pass http://abc.com;
}- 含義:
- 當(dāng)客戶端請求的 URI 以
/test開頭時(shí),這個(gè)location塊會被匹配。 - 比如請求
http://yourdomain.com/test或http://yourdomain.com/test/abc都會進(jìn)入這個(gè)塊。
- 當(dāng)客戶端請求的 URI 以
- URI 處理:
- 默認(rèn)情況下,Nginx 會把請求的完整 URI(包括
/test部分)傳遞給后端,除非proxy_pass有特殊配置。
- 默認(rèn)情況下,Nginx 會把請求的完整 URI(包括
proxy_pass 的作用
proxy_pass 指定將請求代理到的后端服務(wù)器地址(可以是域名、IP 或上游服務(wù)器組)。它定義了請求的目標(biāo)。
語法
proxy_pass 協(xié)議://目標(biāo)地址;
示例:proxy_pass http://abc.com/tt
location /test {
proxy_pass http://abc.com/tt;
}- 含義:
- 將匹配
location /test的請求轉(zhuǎn)發(fā)到http://abc.com/tt。 - 后端服務(wù)器會收到轉(zhuǎn)發(fā)的請求,具體 URI 取決于配置細(xì)節(jié)。
- 將匹配
結(jié)合 location /test 和 proxy_pass http://abc.com/tt
讓我解釋這倆組合起來的效果:
默認(rèn)行為(帶路徑替換)
location /test {
proxy_pass http://abc.com/tt;
}- 客戶端請求:
http://yourdomain.com/test/abc - 轉(zhuǎn)發(fā)到后端:
http://abc.com/tt/abc - 解釋:
location /test匹配請求的/test前綴。- Nginx 會把
/test后面的部分(/abc)保留下來。 proxy_pass http://abc.com/tt指定目標(biāo)地址為http://abc.com/tt,并把剩余路徑(/abc)追加到后面。- 最終后端收到的是
http://abc.com/tt/abc。
加斜杠的效果(不替換路徑)
如果在 proxy_pass 后加斜杠:
location /test {
proxy_pass http://abc.com/tt/;
}- 客戶端請求:
http://yourdomain.com/test/abc - 轉(zhuǎn)發(fā)到后端:
http://abc.com/tt/abc - 解釋:
- 加了斜杠
/后,Nginx 不會把location的/test部分替換掉,而是直接把請求的剩余路徑(/abc)追加到http://abc.com/tt/后面。 - 結(jié)果和上面一樣,但邏輯更明確。
- 加了斜杠
不帶具體路徑
location /test {
proxy_pass http://abc.com;
}- 客戶端請求:
http://yourdomain.com/test/abc - 轉(zhuǎn)發(fā)到后端:
http://abc.com/test/abc - 解釋:
- 因?yàn)?nbsp;
proxy_pass沒有指定具體路徑(只有域名),Nginx 會把客戶端的完整 URI(/test/abc)直接傳遞給后端。
- 因?yàn)?nbsp;
常見配置模式
- 精確匹配路徑:
location = /test {
proxy_pass http://abc.com/tt;
}- 只匹配
http://yourdomain.com/test,不會匹配/test/abc。 - 轉(zhuǎn)發(fā)到
http://abc.com/tt(不帶額外路徑)。
- 去掉前綴:
location /test/ {
proxy_pass http://abc.com/;
}- 請求
http://yourdomain.com/test/abc轉(zhuǎn)發(fā)到http://abc.com/abc。 /test/被去掉,只保留后面的部分。
- 正則匹配:
location ~ ^/test/(.*)$ {
proxy_pass http://abc.com/tt/$1;
}- 請求
http://yourdomain.com/test/abc轉(zhuǎn)發(fā)到http://abc.com/tt/abc。 - 使用正則捕獲組
$1動態(tài)傳遞路徑。
總結(jié)
location /test:匹配以/test開頭的請求。proxy_pass http://abc.com/tt:將請求轉(zhuǎn)發(fā)到abc.com/tt,默認(rèn)保留/test后的路徑并追加到/tt后。- 關(guān)鍵點(diǎn):是否加斜杠(
/)、是否用正則,會影響路徑的傳遞方式。
到此這篇關(guān)于nginx `location` 和 `proxy_pass`的匹配規(guī)則的文章就介紹到這了,更多相關(guān)nginx location 和 proxy_pass匹配規(guī)則內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx中一個(gè)請求的count計(jì)數(shù)跟蹤淺析
這篇文章主要給大家介紹了關(guān)于nginx中一個(gè)請求的count計(jì)數(shù)跟蹤的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
Mac環(huán)境Nginx配置和訪問本地靜態(tài)資源的實(shí)現(xiàn)
這篇文章主要介紹了Mac環(huán)境Nginx配置和訪問本地靜態(tài)資源的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Nginx 過濾靜態(tài)資源文件的訪問日志的實(shí)現(xiàn)
這篇文章主要介紹了Nginx 過濾靜態(tài)資源文件的訪問日志的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
nginx帶寬限制?limit_rate?limit_rate_after指令
這篇文章主要為大家介紹了nginx帶寬限制?limit_rate?limit_rate_after指令詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Centos 6.5 64位中Nginx詳細(xì)安裝部署教程
Nginx是一個(gè)web服務(wù)器也可以用來做負(fù)載均衡及反向代理使用,目前使用最多的就是負(fù)載均衡,具體簡介我就不介紹了百度一下有很多,下面直接進(jìn)入安裝步驟,需要的朋友可以參考下2017-08-08

