nginx的配置轉(zhuǎn)發(fā)到其他網(wǎng)站詳解
需求
有這樣一個(gè)需求:項(xiàng)目中跳轉(zhuǎn)到某個(gè)地址,但這個(gè)地址不想暴露給用戶。
因此我們想到要做一層代理,通過(guò)項(xiàng)目某個(gè)路徑直接用ngnix代理到這個(gè)地址。
查詢相關(guān)文檔后,發(fā)現(xiàn)方案如下:
用return 302
location /myBaidu {
return 302 http://baidu.com;
}
- 這種方案會(huì)直接跳轉(zhuǎn)到baidu,并且會(huì)改變域名,相當(dāng)于直接location.href = 'baidu.com' ,顯然并不適合我們的需求。
- 我們想要的效果是代理到百度,但是瀏覽器的url框內(nèi)還是/sparkMonitor,那么就用proxy_pass
用proxy_pass
假設(shè)我們的網(wǎng)站域名為 http://myorigin.com/
location /myBaidu {
proxy_pass http://www.baidu.com/;
}
這樣配置后就可以由http://myorigin.com/myBaidu直接訪問(wèn)到百度頁(yè)面,如下圖

關(guān)于proxy_pass使用的語(yǔ)法,與/有關(guān)
當(dāng)路徑加上/:相對(duì)路徑,此時(shí)相當(dāng)于代理到http://www.baidu.com/
location /myBaidu {
proxy_pass http://www.baidu.com/;
}
如果訪問(wèn)http://myorigin.com/myBaidu/abc就相當(dāng)于訪問(wèn)http://www.baidu.com/abc
當(dāng)路徑不加/:絕對(duì)路徑,,此時(shí)相當(dāng)于代理到http://www.baidu.com/myBaidu
location /myBaidu {
proxy_pass http://www.baidu.com;
}
如果訪問(wèn)http://myorigin.com/myBaidu/abc就相當(dāng)于訪問(wèn)http://www.baidu.com/myBaidu/abc
當(dāng)路徑加上/xxx/
location /myBaidu {
proxy_pass http://www.baidu.com/xxx/;
}
- 如果訪問(wèn)http://myorigin.com/myBaidu/abc就相當(dāng)于訪問(wèn)http://www.baidu.com/xxx/abc
當(dāng)路徑加上/xxx
location /myBaidu {
proxy_pass http://www.baidu.com/xxx;
}
- 如果訪問(wèn)http://myorigin.com/myBaidu/abc就相當(dāng)于訪問(wèn)http://www.baidu.com/xxxabc
其他問(wèn)題
- 用proxy_pass的方案反向代理到百度頁(yè)面,沒(méi)有任何問(wèn)題。
- 但是我們項(xiàng)目中是要求跳轉(zhuǎn)到某個(gè)內(nèi)網(wǎng)域名,而且此域名和http://myorigin.com/并沒(méi)有互通,因此配置代理時(shí),需要配置成ip地址,然后代理成功跳轉(zhuǎn)
但此時(shí)打開(kāi)代理的頁(yè)面顯示沒(méi)有樣式,查看控制臺(tái)發(fā)現(xiàn)了報(bào)錯(cuò)如下:

點(diǎn)進(jìn)去查看錯(cuò)誤如下圖

- 由此,問(wèn)題就很明顯了,代理的網(wǎng)站用了根目錄絕對(duì)路徑去找到/static下的jquery文件,因此會(huì)直接在我們項(xiàng)目的域名下找http://myorigin.com/static文件,這樣是怎么也無(wú)法找到代理項(xiàng)目的/static文件,因此jquery找不到報(bào)錯(cuò),頁(yè)面樣式失效
- 而且不只是/static文件,可能還有其他文件也找不到,而且還有可能路徑與路由沖突,引發(fā)問(wèn)題
- 因此,我們可以得出結(jié)論,前端項(xiàng)目的nginx的配置轉(zhuǎn)發(fā)到其他網(wǎng)站需要慎重,不是所有網(wǎng)站都可以走前端代理的,需要具體情況具體分析
以上就是nginx的配置轉(zhuǎn)發(fā)到其他網(wǎng)站詳解的詳細(xì)內(nèi)容,更多關(guān)于nginx配置轉(zhuǎn)發(fā)網(wǎng)站的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- nginx做代理時(shí)如何修改querystring方法詳解
- Nginx如何配置根據(jù)路徑轉(zhuǎn)發(fā)詳解
- Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn)
- 使用Docker安裝Nginx并配置端口轉(zhuǎn)發(fā)問(wèn)題及解決方法
- 使用Nginx實(shí)現(xiàn)端口轉(zhuǎn)發(fā)TCP代理的實(shí)現(xiàn)示例
- Nginx 路由轉(zhuǎn)發(fā)和反向代理location配置實(shí)現(xiàn)
- Nginx轉(zhuǎn)發(fā)需求querystring轉(zhuǎn)寫示例解析
相關(guān)文章
Nginx隱藏server頭信息的實(shí)現(xiàn)
本文主要介紹了Nginx隱藏server頭信息的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
使用nginx配置基于域名的虛擬主機(jī)實(shí)現(xiàn)
這篇文章主要介紹了nginx配置基于域名的虛擬主機(jī)實(shí)現(xiàn)​,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
利用Nginx反向代理功能解決WEB網(wǎng)站80端口被封的解決方法
大陸的網(wǎng)絡(luò)環(huán)境,都在天朝神獸的制度下讓我等小P民悲劇一片;動(dòng)不動(dòng)就拔網(wǎng)線、封機(jī)房;現(xiàn)在更厲害的一招,從網(wǎng)關(guān)封殺你的80端口,一旦被封,網(wǎng)站域名就無(wú)法訪問(wèn)2012-08-08
ConfigMap掛載與Subpath在Nginx容器中的應(yīng)用小結(jié)
configmap可以通過(guò)ENV環(huán)境變量和文件兩種方式掛載到容器中,修改configmap后容器中對(duì)應(yīng)的ENV環(huán)境變量不會(huì)更新,將配置文件nginx.conf以configmap文件的方式掛載到容器中,本文介紹ConfigMap掛載與Subpath在Nginx容器中的應(yīng)用小結(jié),感興趣的朋友一起看看吧2024-03-03

