Nginx反向代理之proxy_redirect指令的實現(xiàn)
proxy_redirect
該指令是用來重置頭信息中的"Location"和"Refresh"的值。
語法:
proxy_redirect redirect replacement; proxy_redirect default; proxy_redirect off;
默認(rèn)值:
proxy_redirect default;
編寫位置:它可以存儲在http、server、location里面
現(xiàn)在客戶端向代理服務(wù)器發(fā)送請求,代理服務(wù)器把這個請求轉(zhuǎn)發(fā)到服務(wù)端
服務(wù)端,這里設(shè)置的是146服務(wù)器,代理服務(wù)器這里設(shè)置的是133的電腦
服務(wù)端[192.168.200.146](最終接收前端請求的那個)
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ù)器(最終接收前端請求的那個)進行相應(yīng)的配置修改
第一步: 先使用vim ../conf/nginx.conf中
第二步:在8081端口下,配置location路徑
第三步:檢驗語法,重載配置
第四步:這時通過192.168.200.146:8081能夠看到頁面了
第五步:找到代理服務(wù)器的位置,
第六步:在代理服務(wù)器的位置,添加server塊,映射到146:8081端口的位置
訪問133的路徑,最終顯示146的結(jié)果,說明他背后訪問的是146的資源
但是這里卻出現(xiàn)了一種情況,如果在訪問
192.168.200.133:8081/abc.html,訪問/后面,且目錄下面沒有對應(yīng)的文件卻出現(xiàn)了404 Not Found這樣的錯誤,這時候在想,如果沒有靜態(tài)資源,我還想將頁面展示出來
先到146服務(wù)器的位置(接收服務(wù)器最終數(shù)據(jù)的那臺服務(wù)器)
來到146服務(wù)器的地方,打開配置文件
給他添加if判斷條件,判斷是否存在有該文件,如果沒有,return,繼續(xù)重載到頁面,默認(rèn)跳轉(zhuǎn)到index.html頁面,它會自行進行匹配
檢驗語法,重載配置
現(xiàn)在把abc訪問刷新一次,訪問的就是146的頁面
為什么之前的abc變成了192.168s.200.146了呢?
利用curl -I xxxx可以查看具體的訪問頁面,訪問最終結(jié)果爆出了302
出現(xiàn)302的原因是因為if訪問條件不存在,出現(xiàn)了一個302重定向地址
應(yīng)用常見是客戶端只能知道代理服務(wù)器的地址,而代理服務(wù)器再能將請求轉(zhuǎn)發(fā)到服務(wù)端
同時也存在了一個問題,客戶端是不知道最終服務(wù)端的IP地址的,想要客戶端知道代理服務(wù)器的地址,最后要用到proxy_redirect
該指令是用來重置頭信息中的"Location"和"Refresh"的值,編寫在代理服務(wù)器上,將客戶端的指令發(fā)送給最終服務(wù)器
使用proxy_redirect的具體配置,打開配置資料,proxy_redirect怎樣進行設(shè)置,有三種方式,編寫的位置在http、server、location三大塊當(dāng)中
第一種方式,proxy_redirect redirect replacement;(redirect是location的值)replacement(是替換的值)
具體配置內(nèi)容
檢驗語法,重載配置
再訪問abc.html文件的時候,找不到靜態(tài)資源,同時也根據(jù)了上文的配置跳轉(zhuǎn)到133的服務(wù)器上了
最終跳轉(zhuǎn)到146的映射文件,使用proxy_pass中
檢驗語法,重載配置
第一次訪問abc.html頁面,跳轉(zhuǎn)失敗,最終返回的是192.168.200.133頁面,這里初步設(shè)置是因為緩存影響的,沒有跳轉(zhuǎn)
打開瀏覽器設(shè)置,將緩存給刪除一下
緩存刪除之后,訪問abc.html頁面,現(xiàn)在最終映射的內(nèi)容,訪問了146的地方了
現(xiàn)在location,已經(jīng)成功的映射到了133的地址當(dāng)中了
該指令的幾組選項
proxy_redirect redirect replacement;
redirect:目標(biāo),Location的值
replacement:要替換的
proxy_redirect default;???????
default;
將location塊的uri變量作為replacement,
將proxy_pass變量作為redirect進行替換
proxy_redirect off;
關(guān)閉proxy_redirect的功能
到此這篇關(guān)于Nginx反向代理之proxy_redirect指令的實現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx proxy_redirect內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx配置gzip壓縮優(yōu)化傳輸效率加快頁面訪問速度的問題
本文介紹了如何在nginx服務(wù)器中配置gzip壓縮,通過壓縮HTTP響應(yīng)內(nèi)容,減少數(shù)據(jù)傳輸大小和響應(yīng)時間,從而提升網(wǎng)站性能和訪問速度,感興趣的朋友跟隨小編一起看看吧2024-09-09Nginx生產(chǎn)環(huán)境平滑升級的實現(xiàn)
本文主要介紹了Nginx生產(chǎn)環(huán)境平滑升級的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03解決nginx報錯信息 client intended to send too large body: 1331696
這篇文章主要介紹了解決nginx報錯 client intended to send too large body: 1331696 bytes的相關(guān)資料,需要的朋友可以參考下2017-02-02Nginx反向代理和內(nèi)容替換模塊實現(xiàn)網(wǎng)頁內(nèi)容動態(tài)替換功能
Nginx是一款輕量級高性能服務(wù)器軟件,雖然輕量,但功能非常強大,可用于提供WEB服務(wù)、反向代理、負載均衡、緩存服務(wù)、甚至可以通過添加一些模塊搭建rtmp流媒體服務(wù),最近碰到一個客戶需求,需要用到nginx反向代理替換網(wǎng)頁內(nèi)容,貼出來跟大家交流,如有不足之處請指出2024-10-10