nginx中的location路徑配置(實路徑和虛路徑)
nginx location路徑配置(實路徑和虛路徑)
注:
- 本文要說的不是
location的配置規(guī)則和內容 - 而是基于
url的nginx代理轉發(fā)的后端接口的路徑配置
實路徑和虛路徑?
location配置路徑時,是分實路徑和虛路徑的,并且路徑會影響到proxy_pass轉發(fā)時的路徑。
假如tomcat啟動了一個名為online-registration的工程
登錄的后端接口如下所示:
@RestController
@RequestMapping("/user/login")
public class UserLoginController {
@RequestMapping()
public Object login() {
return "success";
}
}nginx的location配置如下所示:
自己測試時不要同時配置,避免混淆
# 虛路徑
location /v1/online {
proxy_pass http://1.1.1.1:8080/online-registration/ ;
}
# 實路徑
location /v1/online/user {
proxy_pass http://1.1.1.1:8080/online-registration/user ;
}結合接口的RequestMapping和nginx配置來看:
接口的路徑是 /user/login,location配置的/v1/online為虛擬路徑
它的proxy_pass配置到tomcat啟動的工程名即可,/v1/online/user路徑中包含RequestMapping的關鍵字
它的proxy_pass路徑需要配置到工程名下的具體接口的路徑。
以瀏覽器訪問虛路徑分析
location /v1/online {
proxy_pass http://1.1.1.1:8080/online-registration/ ;
}訪問http://1.1.1.1/v1/online/user/login
nginx匹配url中的/v1/online時
nginx會將online后面的user/login自動的添加到proxy_pass轉發(fā)的路徑/online-registration/后面
即nginx轉發(fā)的實際路徑為: http://1.1.1.1:8080/online-registration/user/login
正確的訪問后端接口;
以瀏覽器訪問實路徑分析
location /v1/online/user {
proxy_pass http://1.1.1.1:8080/online-registration/user ;
}訪問http://1.1.1.1/v1/online/user/login,同虛路徑的訪問方式一致。
但是如果proxy_pass的配置是http://1.1.1.1:8080/online-registration;
那么nginx代理時
轉發(fā)的實際路徑為:http://1.1.1.1:8080/online-registration/login
如果你的項目只有/user/login接口,而沒有/login接口時,就會出現訪問異常。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Nginx 配置 proxy_hide_header 隱藏后端 Server&n
Nginx反向代理場景中,后端服務常會在響應頭中暴露版本信息,使用proxy_hide_header指令可以在Nginx層將其過濾掉,本文就來詳細的介紹一下Nginx隱藏后端 Server 的版本信息的實現,感興趣的可以了解一下2026-04-04

