Nginx中l(wèi)ocation proxy_pass加與不加/的區(qū)別說明
一、location 配置
前綴匹配
# 匹配以 /images/ 開頭的URI
location /images/ {
# 相應(yīng)的處理配置
}- 后綴沒有
/時(shí),location /abc/def可以匹配/abc/defghi請(qǐng)求,也可以匹配/abc/def/ghi等 - 而后綴有
/時(shí),location /abc/def/不能匹配/abc/defghi請(qǐng)求,只能匹配/abc/def/anything這樣的請(qǐng)求
精確匹配
# 精確匹配僅為 /login 的URI
location = /login {
# 進(jìn)行相應(yīng)的處理
}正則表達(dá)式匹配
# 通過正則匹配形如 /user/123 的URI
location ~ ^/user/\d+ {
# 進(jìn)行相應(yīng)的處理
}通配符匹配
# 匹配以 .jpg、.png 或 .gif 結(jié)尾的URI
location ~* \.(jpg|png|gif)$ {
# 進(jìn)行相應(yīng)的處理
}使用 ~* 進(jìn)行正則表達(dá)式匹配時(shí),表示對(duì)請(qǐng)求的 URI 不區(qū)分大小寫進(jìn)行匹配
二、proxy_pass 配置
不加后綴 “/”
location /api {
# 代理僅替換 schema://ip:port
proxy_pass http://backend_server;
}在這種情況下,如果原始請(qǐng)求的 URI 是 /api/foo,Nginx 代理會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到 http://backend_server/api/foo。
Nginx 不會(huì)修改原始請(qǐng)求的 URI,而是將其完整地傳遞給后端服務(wù)器。
加上后綴 “/”
location /api {
# 代理替換整個(gè)前綴,包括location匹配使用的前綴。即 schema://ip:port/[location pattern]
proxy_pass http://backend_server/;
}在這種情況下,如果原始請(qǐng)求的 URI 是 /api/foo,Nginx 代理會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到 http://backend_server/foo。
Nginx 會(huì)將原始請(qǐng)求的 URI 中location前綴 的部分去除,并將剩余部分追加到 proxy_pass 指令中配置的后端服務(wù)器地址后面。
當(dāng)location為正則表達(dá)式時(shí),proxy_pass的末尾不能帶/,否則會(huì)報(bào)錯(cuò)如下
nginx: [emerg] “proxy_pass” cannot have URI part in location given by regular expression, or inside named location, or inside “if” statement, or inside “limit_except” block in xxx.conf
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx+Lua腳本+Redis 實(shí)現(xiàn)自動(dòng)封禁訪問頻率過高IP
本文主要介紹了如何使用OpenResty+Lua進(jìn)行動(dòng)態(tài)封禁IP的解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-10-10
Nginx proxy_ssl_server_name 解決后端多域名證書匹配失敗的方法
本文介紹了Nginx反向代理HTTPS后端時(shí)的關(guān)鍵指令proxy_ssl_server_name,當(dāng)后端托管多域名證書時(shí),Nginx需啟用SNI擴(kuò)展以正確匹配證書,本文詳細(xì)分析了問題場(chǎng)景、基礎(chǔ)解決方案,并提供了進(jìn)階配置方案,感興趣的可以了解一下2026-04-04
Nginx中Stub-Status監(jiān)控當(dāng)前的并發(fā)連接數(shù)
Stub-Status 是 Nginx 內(nèi)置輕量模塊,用于暴露實(shí)時(shí)并發(fā)連接數(shù)等狀態(tài),本文就來介紹一下Nginx中Stub-Status監(jiān)控當(dāng)前的并發(fā)連接數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04
Nginx上配置Basic Authorization登錄認(rèn)服務(wù)證的教程
現(xiàn)在我們所使用的包括社交網(wǎng)絡(luò)API等開放平臺(tái)授權(quán)獲得用戶的用戶名和密碼一般有兩種認(rèn)證方式,一種是Basic Auth,一種是OAuth,這里我們就來看一下Nginx上配置Basic Authorization登錄認(rèn)服務(wù)證的教程2016-06-06
WebApi部署多服務(wù)器配置Nginx負(fù)載均衡的教程
這篇文章主要介紹了WebApi部署多服務(wù)器配置Nginx負(fù)載均衡 ,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
ubuntu系統(tǒng)中nginx啟動(dòng)腳本
這篇文章主要介紹了ubuntu系統(tǒng)中nginx啟動(dòng)腳本,可以實(shí)現(xiàn)nginx的自啟動(dòng),需要的朋友可以參考下2014-02-02

