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

