nginx的配置轉(zhuǎn)發(fā)到其他網(wǎng)站詳解
需求
有這樣一個(gè)需求:項(xiàng)目中跳轉(zhuǎn)到某個(gè)地址,但這個(gè)地址不想暴露給用戶。
因此我們想到要做一層代理,通過項(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直接訪問到百度頁面,如下圖
關(guān)于proxy_pass使用的語法,與/有關(guān)
當(dāng)路徑加上/:相對(duì)路徑,此時(shí)相當(dāng)于代理到http://www.baidu.com/
location /myBaidu { proxy_pass http://www.baidu.com/; }
如果訪問http://myorigin.com/myBaidu/abc就相當(dāng)于訪問http://www.baidu.com/abc
當(dāng)路徑不加/:絕對(duì)路徑,,此時(shí)相當(dāng)于代理到http://www.baidu.com/myBaidu
location /myBaidu { proxy_pass http://www.baidu.com; }
如果訪問http://myorigin.com/myBaidu/abc就相當(dāng)于訪問http://www.baidu.com/myBaidu/abc
當(dāng)路徑加上/xxx/
location /myBaidu { proxy_pass http://www.baidu.com/xxx/; }
- 如果訪問http://myorigin.com/myBaidu/abc就相當(dāng)于訪問http://www.baidu.com/xxx/abc
當(dāng)路徑加上/xxx
location /myBaidu { proxy_pass http://www.baidu.com/xxx; }
- 如果訪問http://myorigin.com/myBaidu/abc就相當(dāng)于訪問http://www.baidu.com/xxxabc
其他問題
- 用proxy_pass的方案反向代理到百度頁面,沒有任何問題。
- 但是我們項(xiàng)目中是要求跳轉(zhuǎn)到某個(gè)內(nèi)網(wǎng)域名,而且此域名和http://myorigin.com/并沒有互通,因此配置代理時(shí),需要配置成ip地址,然后代理成功跳轉(zhuǎn)
但此時(shí)打開代理的頁面顯示沒有樣式,查看控制臺(tái)發(fā)現(xiàn)了報(bào)錯(cuò)如下:
點(diǎn)進(jìn)去查看錯(cuò)誤如下圖
- 由此,問題就很明顯了,代理的網(wǎng)站用了根目錄絕對(duì)路徑去找到/static下的jquery文件,因此會(huì)直接在我們項(xiàng)目的域名下找http://myorigin.com/static文件,這樣是怎么也無法找到代理項(xiàng)目的/static文件,因此jquery找不到報(bào)錯(cuò),頁面樣式失效
- 而且不只是/static文件,可能還有其他文件也找不到,而且還有可能路徑與路由沖突,引發(fā)問題
- 因此,我們可以得出結(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)文章!
相關(guān)文章
詳解nginx配置location總結(jié)及rewrite規(guī)則寫法
本篇文章主要介紹了詳解nginx配置location總結(jié)及rewrite規(guī)則寫法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02阿里云國際版使用Nginx作為HTTPS轉(zhuǎn)發(fā)代理服務(wù)器的處理方法
本文介紹了使用NGINX作為HTTPS流量轉(zhuǎn)發(fā)代理的兩種方法。它總結(jié)了NGINX使用HTTP?CONNECT隧道和NGINX流充當(dāng)HTTPS轉(zhuǎn)發(fā)代理的解決方案的原則,環(huán)境構(gòu)建要求,應(yīng)用場景和關(guān)鍵問題2022-05-05Nginx+Keepalived實(shí)現(xiàn)雙機(jī)主備的方法
這篇文章主要介紹了Nginx+Keepalived實(shí)現(xiàn)雙機(jī)主備的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03nginx安裝圖解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了nginx安裝的圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Nginx簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
Nginx是一個(gè)跨平臺(tái)的Web服務(wù)器,可運(yùn)行在Linux、FreeBSD、Solaris、AIX、Mac OS、Windows等操作系統(tǒng)上,并且它還可以使用當(dāng)前操作系統(tǒng)特有的一些高效API來提高自己的性能2017-08-08解決Nginx 配置 proxy_pass 后 返回404問題
這篇文章主要介紹了Nginx 配置 proxy_pass 后 返回404問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01nginx如何實(shí)現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈
這篇文章主要為大家介紹了nginx實(shí)現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11