詳解nginx?中l(wèi)ocation和?proxy_pass的匹配規(guī)則
我來詳細(xì)解釋 location 和 proxy_pass 的作用以及它們?cè)谀愕睦又械暮x。
location 的作用
location 是 Nginx 中用來匹配客戶端請(qǐng)求 URI 的指令,決定如何處理特定路徑的請(qǐng)求。它定義了請(qǐng)求的路由規(guī)則,后續(xù)的配置(如 proxy_pass)會(huì)應(yīng)用在匹配的請(qǐng)求上。
語法
location [修飾符] 匹配模式 {
# 配置塊
}- 修飾符:可選,比如
=(精確匹配)、~(正則匹配)等。 - 匹配模式:可以是具體路徑、正則表達(dá)式等。
示例:location /test
location /test {
proxy_pass http://abc.com;
}- 含義:
- 當(dāng)客戶端請(qǐng)求的 URI 以
/test開頭時(shí),這個(gè)location塊會(huì)被匹配。 - 比如請(qǐng)求
http://yourdomain.com/test或http://yourdomain.com/test/abc都會(huì)進(jìn)入這個(gè)塊。
- 當(dāng)客戶端請(qǐng)求的 URI 以
- URI 處理:
- 默認(rèn)情況下,Nginx 會(huì)把請(qǐng)求的完整 URI(包括
/test部分)傳遞給后端,除非proxy_pass有特殊配置。
- 默認(rèn)情況下,Nginx 會(huì)把請(qǐng)求的完整 URI(包括
proxy_pass 的作用
proxy_pass 指定將請(qǐng)求代理到的后端服務(wù)器地址(可以是域名、IP 或上游服務(wù)器組)。它定義了請(qǐng)求的目標(biāo)。
語法
proxy_pass 協(xié)議://目標(biāo)地址;
示例:proxy_pass http://abc.com/tt
location /test {
proxy_pass http://abc.com/tt;
}- 含義:
- 將匹配
location /test的請(qǐng)求轉(zhuǎn)發(fā)到http://abc.com/tt。 - 后端服務(wù)器會(huì)收到轉(zhuǎn)發(fā)的請(qǐng)求,具體 URI 取決于配置細(xì)節(jié)。
- 將匹配
結(jié)合 location /test 和 proxy_pass http://abc.com/tt
讓我解釋這倆組合起來的效果:
默認(rèn)行為(帶路徑替換)
location /test {
proxy_pass http://abc.com/tt;
}- 客戶端請(qǐng)求:
http://yourdomain.com/test/abc - 轉(zhuǎn)發(fā)到后端:
http://abc.com/tt/abc - 解釋:
location /test匹配請(qǐng)求的/test前綴。- Nginx 會(huì)把
/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/;
}- 客戶端請(qǐng)求:
http://yourdomain.com/test/abc - 轉(zhuǎn)發(fā)到后端:
http://abc.com/tt/abc - 解釋:
- 加了斜杠
/后,Nginx 不會(huì)把location的/test部分替換掉,而是直接把請(qǐng)求的剩余路徑(/abc)追加到http://abc.com/tt/后面。 - 結(jié)果和上面一樣,但邏輯更明確。
- 加了斜杠
不帶具體路徑
location /test {
proxy_pass http://abc.com;
}- 客戶端請(qǐng)求:
http://yourdomain.com/test/abc - 轉(zhuǎn)發(fā)到后端:
http://abc.com/test/abc - 解釋:
- 因?yàn)?nbsp;
proxy_pass沒有指定具體路徑(只有域名),Nginx 會(huì)把客戶端的完整 URI(/test/abc)直接傳遞給后端。
- 因?yàn)?nbsp;
常見配置模式
- 精確匹配路徑:
location = /test {
proxy_pass http://abc.com/tt;
}- 只匹配
http://yourdomain.com/test,不會(huì)匹配/test/abc。 - 轉(zhuǎn)發(fā)到
http://abc.com/tt(不帶額外路徑)。
- 去掉前綴:
location /test/ {
proxy_pass http://abc.com/;
}- 請(qǐng)求
http://yourdomain.com/test/abc轉(zhuǎn)發(fā)到http://abc.com/abc。 /test/被去掉,只保留后面的部分。
- 正則匹配:
location ~ ^/test/(.*)$ {
proxy_pass http://abc.com/tt/$1;
}- 請(qǐng)求
http://yourdomain.com/test/abc轉(zhuǎn)發(fā)到http://abc.com/tt/abc。 - 使用正則捕獲組
$1動(dòng)態(tài)傳遞路徑。
總結(jié)
location /test:匹配以/test開頭的請(qǐng)求。proxy_pass http://abc.com/tt:將請(qǐng)求轉(zhuǎn)發(fā)到abc.com/tt,默認(rèn)保留/test后的路徑并追加到/tt后。- 關(guān)鍵點(diǎn):是否加斜杠(
/)、是否用正則,會(huì)影響路徑的傳遞方式。
到此這篇關(guān)于nginx `location` 和 `proxy_pass`的匹配規(guī)則的文章就介紹到這了,更多相關(guān)nginx location 和 proxy_pass匹配規(guī)則內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx上部署react項(xiàng)目的實(shí)例方法
今天小編就為大家分享一篇關(guān)于nginx上部署react項(xiàng)目的實(shí)例方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
利用nginx搭建靜態(tài)資源服務(wù)器的方法步驟
這篇文章主要介紹了利用nginx搭建靜態(tài)資源服務(wù)器的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Nginx代理MySQL實(shí)現(xiàn)通過域名連接數(shù)據(jù)庫(kù)的詳細(xì)教程
我們的生產(chǎn)環(huán)境基本上都部署在云服務(wù)器上,例如應(yīng)用服務(wù)器、MySQL服務(wù)器等,如果MySQL服務(wù)器直接暴露在公網(wǎng),就會(huì)存在很大的風(fēng)險(xiǎn),為了保證數(shù)據(jù)安全,MySQL服務(wù)器的端口是不對(duì)外開放的,所以本文介紹了Nginx代理MySQL實(shí)現(xiàn)通過域名連接數(shù)據(jù)庫(kù)的詳細(xì)教程2024-07-07
Nginx+SSL實(shí)現(xiàn)雙向認(rèn)證的示例代碼
這篇文章主要介紹了Nginx+SSL實(shí)現(xiàn)雙向認(rèn)證的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01
Nginx搭建RTMP流媒體服務(wù)器的實(shí)現(xiàn)
本文主要介紹了Nginx搭建RTMP流媒體服務(wù)器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
封80端口應(yīng)對(duì)策略 Nginx反向代理For WIN2003超級(jí)傻瓜式配置
封80應(yīng)對(duì)策略,Nginx反向代理ForWIN2003超級(jí)傻瓜式配置!2010-03-03
前端開發(fā)用得著的nginx配置(場(chǎng)景)
這篇文章主要介紹了前端開發(fā)用得著的nginx配置,前端的工作過程里,本地開發(fā)、提供測(cè)試環(huán)境,總得有個(gè)用著順手的服務(wù)器軟件,這個(gè)場(chǎng)景里nginx很流行,特分享下需要的朋友可以參考下2014-09-09

