在日常開發(fā)過(guò)程中,方便的我們測(cè)試服務(wù)端的代碼,我們可以將前端服務(wù)器的請(qǐng)求代理到本地。首先,我們抓一個(gè)前端訪問(wèn)的請(qǐng)求進(jìn)行分析
http://a.dev.b.com/c/api/d/e/f?pageNO=1&pageSize=10
從這個(gè)請(qǐng)求中我們可以發(fā)現(xiàn),我們需要代理的域名是:http://a.dev.b.com/ ,看一眼本地的代碼
@RequestMapping("/api/d/e")
也就是說(shuō),/api/d/e/f 是服務(wù)器端可以識(shí)別的。c只是一個(gè)虛擬的路徑,需要被nginx映射掉。好了,分析結(jié)束,開始搞起來(lái)了。首先配置本地的hosts文件。增加配置,將http://a.dev.b.com/ 映射到本地
127.0.0.1 a.dev.b.com
隨后配置nginx.conf文件,增加代理。
server {
listen 80;
server_name a.dev.b.com;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /c {
proxy_pass http://localhost:9999/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Read-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
監(jiān)聽(tīng)http://a.dev.b.com/的80端口,如果有請(qǐng)求過(guò)來(lái),并且鏈接中帶有c,就將此請(qǐng)求轉(zhuǎn)發(fā)到本地的9999端口,這個(gè)對(duì)應(yīng)的就是我們自己的服務(wù)。

然后前端服務(wù)器的請(qǐng)求就轉(zhuǎn)發(fā)到了本地的服務(wù)器上,方便我們本地調(diào)試了。
這里有一個(gè)小說(shuō)明就是proxy_pass配置說(shuō)明,proxy_pass轉(zhuǎn)發(fā)的路徑后是否帶 “/”,是影響你正常跳轉(zhuǎn)的一個(gè)方面。例如
例1
location /test/
{
proxy_pass http://test:8080;
}
例2
location /test/
{
proxy_pass http://test:8080/;
}
針對(duì)情況1,如果訪問(wèn)url = http://server/test/test.jsp,則被nginx代理后,請(qǐng)求路徑會(huì)便問(wèn)http://proxy_pass/test/test.jsp,將test/ 作為根路徑,請(qǐng)求test/路徑下的資源
針對(duì)情況2,如果訪問(wèn)url = http://server/test/test.jsp,則被nginx代理后,請(qǐng)求路徑會(huì)變?yōu)?http://proxy_pass/test.jsp,直接訪問(wèn)server的根資源.