Nginx反向代理之proxy_redirect指令的實(shí)現(xiàn)
proxy_redirect
該指令是用來(lái)重置頭信息中的"Location"和"Refresh"的值。
語(yǔ)法:
proxy_redirect redirect replacement; proxy_redirect default; proxy_redirect off;
默認(rèn)值:
proxy_redirect default;
編寫(xiě)位置:它可以存儲(chǔ)在http、server、location里面
現(xiàn)在客戶端向代理服務(wù)器發(fā)送請(qǐng)求,代理服務(wù)器把這個(gè)請(qǐng)求轉(zhuǎn)發(fā)到服務(wù)端

服務(wù)端,這里設(shè)置的是146服務(wù)器,代理服務(wù)器這里設(shè)置的是133的電腦

服務(wù)端[192.168.200.146](最終接收前端請(qǐng)求的那個(gè))
server {
listen 8081;
server_name localhost;
if (!-f $request_filename){
return 302 http://192.168.200.146;
}
}代理服務(wù)端[192.168.200.133]
server {
listen 8081;
server_name localhost;
location / {
proxy_pass http://192.168.200.146:8081/;
proxy_redirect http://192.168.200.146
http://192.168.200.133;
}
}先在146的服務(wù)器(最終接收前端請(qǐng)求的那個(gè))進(jìn)行相應(yīng)的配置修改
第一步: 先使用vim ../conf/nginx.conf中

第二步:在8081端口下,配置location路徑

第三步:檢驗(yàn)語(yǔ)法,重載配置

第四步:這時(shí)通過(guò)192.168.200.146:8081能夠看到頁(yè)面了

第五步:找到代理服務(wù)器的位置,

第六步:在代理服務(wù)器的位置,添加server塊,映射到146:8081端口的位置

訪問(wèn)133的路徑,最終顯示146的結(jié)果,說(shuō)明他背后訪問(wèn)的是146的資源

但是這里卻出現(xiàn)了一種情況,如果在訪問(wèn)
192.168.200.133:8081/abc.html,訪問(wèn)/后面,且目錄下面沒(méi)有對(duì)應(yīng)的文件卻出現(xiàn)了404 Not Found這樣的錯(cuò)誤,這時(shí)候在想,如果沒(méi)有靜態(tài)資源,我還想將頁(yè)面展示出來(lái)

先到146服務(wù)器的位置(接收服務(wù)器最終數(shù)據(jù)的那臺(tái)服務(wù)器)
來(lái)到146服務(wù)器的地方,打開(kāi)配置文件

給他添加if判斷條件,判斷是否存在有該文件,如果沒(méi)有,return,繼續(xù)重載到頁(yè)面,默認(rèn)跳轉(zhuǎn)到index.html頁(yè)面,它會(huì)自行進(jìn)行匹配

檢驗(yàn)語(yǔ)法,重載配置

現(xiàn)在把a(bǔ)bc訪問(wèn)刷新一次,訪問(wèn)的就是146的頁(yè)面

為什么之前的abc變成了192.168s.200.146了呢?
利用curl -I xxxx可以查看具體的訪問(wèn)頁(yè)面,訪問(wèn)最終結(jié)果爆出了302

出現(xiàn)302的原因是因?yàn)閕f訪問(wèn)條件不存在,出現(xiàn)了一個(gè)302重定向地址

應(yīng)用常見(jiàn)是客戶端只能知道代理服務(wù)器的地址,而代理服務(wù)器再能將請(qǐng)求轉(zhuǎn)發(fā)到服務(wù)端

同時(shí)也存在了一個(gè)問(wèn)題,客戶端是不知道最終服務(wù)端的IP地址的,想要客戶端知道代理服務(wù)器的地址,最后要用到proxy_redirect

該指令是用來(lái)重置頭信息中的"Location"和"Refresh"的值,編寫(xiě)在代理服務(wù)器上,將客戶端的指令發(fā)送給最終服務(wù)器
使用proxy_redirect的具體配置,打開(kāi)配置資料,proxy_redirect怎樣進(jìn)行設(shè)置,有三種方式,編寫(xiě)的位置在http、server、location三大塊當(dāng)中
第一種方式,proxy_redirect redirect replacement;(redirect是location的值)replacement(是替換的值)

具體配置內(nèi)容

檢驗(yàn)語(yǔ)法,重載配置

再訪問(wèn)abc.html文件的時(shí)候,找不到靜態(tài)資源,同時(shí)也根據(jù)了上文的配置跳轉(zhuǎn)到133的服務(wù)器上了

最終跳轉(zhuǎn)到146的映射文件,使用proxy_pass中

檢驗(yàn)語(yǔ)法,重載配置

第一次訪問(wèn)abc.html頁(yè)面,跳轉(zhuǎn)失敗,最終返回的是192.168.200.133頁(yè)面,這里初步設(shè)置是因?yàn)榫彺嬗绊懙?,沒(méi)有跳轉(zhuǎn)

打開(kāi)瀏覽器設(shè)置,將緩存給刪除一下

緩存刪除之后,訪問(wèn)abc.html頁(yè)面,現(xiàn)在最終映射的內(nèi)容,訪問(wèn)了146的地方了

現(xiàn)在location,已經(jīng)成功的映射到了133的地址當(dāng)中了

該指令的幾組選項(xiàng)
proxy_redirect redirect replacement;
redirect:目標(biāo),Location的值
replacement:要替換的
proxy_redirect default;???????
default;
將location塊的uri變量作為replacement,
將proxy_pass變量作為redirect進(jìn)行替換
proxy_redirect off;
關(guān)閉proxy_redirect的功能
到此這篇關(guān)于Nginx反向代理之proxy_redirect指令的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx proxy_redirect內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx部署vue項(xiàng)目無(wú)法直接訪問(wèn)其他路徑的問(wèn)題及解決
Nginx部署Vue項(xiàng)目時(shí)無(wú)法直接訪問(wèn)其他路徑的原因是Vue項(xiàng)目是單頁(yè)應(yīng)用(SPA),前端路由由JavaScript處理,Nginx默認(rèn)配置無(wú)法直接訪問(wèn)其他路徑,因?yàn)榉?wù)器會(huì)嘗試查找對(duì)應(yīng)路徑的文件而不是返回index.html,需要在Nginx配置中修改路由規(guī)則2025-12-12
Nginx中worker connections問(wèn)題的解決方法
這篇文章主要介紹了Nginx中worker connections問(wèn)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
Nginx配置location匹配順序詳細(xì)總結(jié)
這篇文章主要介紹了Nginx配置location匹配順序詳解,Nginx是十分輕量級(jí)的HTTP服務(wù)器,Nginx憑借其穩(wěn)定性、低資源消耗、簡(jiǎn)單配置和豐富的功能,從十多年前名不見(jiàn)經(jīng)傳的Web服務(wù)器軟件,發(fā)展到如今能夠跟Apache匹敵的地位,需要的朋友可以參考下2023-08-08
nginx進(jìn)行端口轉(zhuǎn)發(fā)的實(shí)現(xiàn)
本文主要介紹了nginx進(jìn)行端口轉(zhuǎn)發(fā)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Nginx上配置Basic Authorization登錄認(rèn)服務(wù)證的教程
現(xiàn)在我們所使用的包括社交網(wǎng)絡(luò)API等開(kāi)放平臺(tái)授權(quán)獲得用戶的用戶名和密碼一般有兩種認(rèn)證方式,一種是Basic Auth,一種是OAuth,這里我們就來(lái)看一下Nginx上配置Basic Authorization登錄認(rèn)服務(wù)證的教程2016-06-06

