nginx中的location路徑配置(實(shí)路徑和虛路徑)
nginx location路徑配置(實(shí)路徑和虛路徑)
注:
- 本文要說的不是
location
的配置規(guī)則和內(nèi)容 - 而是基于
url
的nginx
代理轉(zhuǎn)發(fā)的后端接口的路徑配置
實(shí)路徑和虛路徑?
location
配置路徑時(shí),是分實(shí)路徑和虛路徑的,并且路徑會(huì)影響到proxy_pass
轉(zhuǎn)發(fā)時(shí)的路徑。
假如tomcat
啟動(dòng)了一個(gè)名為online-registration
的工程
登錄的后端接口如下所示:
@RestController @RequestMapping("/user/login") public class UserLoginController { @RequestMapping() public Object login() { return "success"; } }
nginx
的location
配置如下所示:
自己測(cè)試時(shí)不要同時(shí)配置,避免混淆
# 虛路徑 location /v1/online { proxy_pass http://1.1.1.1:8080/online-registration/ ; } # 實(shí)路徑 location /v1/online/user { proxy_pass http://1.1.1.1:8080/online-registration/user ; }
結(jié)合接口的RequestMapping
和nginx
配置來看:
接口的路徑是 /user/login
,location
配置的/v1/online
為虛擬路徑
它的proxy_pass
配置到tomcat
啟動(dòng)的工程名即可,/v1/online/user
路徑中包含RequestMapping
的關(guān)鍵字
它的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
時(shí)
nginx
會(huì)將online
后面的user/login
自動(dòng)的添加到proxy_pass
轉(zhuǎn)發(fā)的路徑/online-registration/
后面
即nginx
轉(zhuǎn)發(fā)的實(shí)際路徑為: http://1.1.1.1:8080/online-registration/user/login
正確的訪問后端接口;
以瀏覽器訪問實(shí)路徑分析
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
代理時(shí)
轉(zhuǎn)發(fā)的實(shí)際路徑為:http://1.1.1.1:8080/online-registration/login
如果你的項(xiàng)目只有/user/login
接口,而沒有/login
接口時(shí),就會(huì)出現(xiàn)訪問異常。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
nginx+tomcat實(shí)現(xiàn)負(fù)載均衡,使用redis session共享
這篇文章主要介紹了nginx tomcat負(fù)載均衡 使用redis session共享,有興趣的同學(xué)可以了解一下。2016-12-12詳解 Nginx 負(fù)載均衡和反向代理配置和優(yōu)化
這篇文章主要介紹了詳解 Nginx 負(fù)載均衡和反向代理配置和優(yōu)化的相關(guān)資料,需要的朋友可以參考下2017-03-03