深度詳解什么是Nginx正向代理與反向代理
目錄
- 正向代理和反向代理的概念
- 1、正向代理
- 2、反面代理
- 正向代理和反向代理配置
- 1、正向向代理配置
- 2、反向代理配置
正向代理和反向代理的概念
1、正向代理
它的工作原理就像一個(gè)跳板,簡(jiǎn)單的說(shuō),我是一個(gè)用戶(hù),我訪(fǎng)問(wèn)不了某網(wǎng)站,但是我能訪(fǎng)問(wèn)一個(gè)代理服務(wù)器,這個(gè)代理服務(wù)器呢,他能訪(fǎng)問(wèn)那個(gè)我不能訪(fǎng)問(wèn)的網(wǎng)站,于是我先連上代理服務(wù)器,告訴他我需要那個(gè)無(wú)法訪(fǎng)問(wèn)網(wǎng)站的內(nèi)容,代理服務(wù)器去取回來(lái),然后返回給我,從網(wǎng)站的角度,只在代理服務(wù)器來(lái)取內(nèi)容的時(shí)候有一次記錄,有時(shí)候并不知道是用戶(hù)的請(qǐng)求,也隱藏了用戶(hù)的資料,這取決于代理告不告訴網(wǎng)站。
結(jié)論就是 :
正向代理 是一個(gè)位于客戶(hù)端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶(hù)端向代理發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶(hù)端。客戶(hù)端必須要進(jìn)行一些特別的設(shè)置才能使用正向代理。就像要訪(fǎng)問(wèn)google用vpn代理翻墻去訪(fǎng)問(wèn)(用戶(hù)知道要訪(fǎng)問(wèn)真正的服務(wù)器)
2、反面代理
反向代理:例用戶(hù)訪(fǎng)問(wèn) https://www.baidu.com/readme
但https://www.baidu.com上并不存在readme頁(yè)面,他是偷偷從另外一臺(tái)服務(wù)器上取回來(lái),然后作為自己的內(nèi)容吐給用戶(hù),但用戶(hù)并不知情,這里所提到的 https://www.baidu.com 這個(gè)域名對(duì)應(yīng)的服務(wù)器就設(shè)置了反向代理功能。
結(jié)論就是:
反向代理正好相反,對(duì)于客戶(hù)端而言它就像是原始服務(wù)器,并且客戶(hù)端不需要進(jìn)行任何特別的設(shè)置。客戶(hù)端向反向代理 的命名空間(name-space)中的內(nèi)容發(fā)送普通請(qǐng)求,接著反向代理將判斷向何處(原始服務(wù)器)轉(zhuǎn)交請(qǐng)求,并將獲得的內(nèi)容返回給客戶(hù)端,就像這些內(nèi)容 原本就是它自己的一樣。(用戶(hù)不知道要訪(fǎng)問(wèn)真正的服務(wù)器)
以租房為例解釋正向代理和反向代理?
客戶(hù)端 <一> 代理 <一>服務(wù)端
A租房人(客戶(hù)端),B房產(chǎn)中介(代理),C真實(shí)房東(服務(wù)端)
1、正向代理
A租房人(客戶(hù)端)想租C真實(shí)房東的房子,但不認(rèn)識(shí)C真實(shí)房東(服務(wù)端
B房產(chǎn)中介(代理)認(rèn)識(shí)C真實(shí)房東(服務(wù)端),并且從C真實(shí)房東(服務(wù)端)租到了房
A租房人(客戶(hù)端)通過(guò)B房產(chǎn)中介(代理)租到了C真實(shí)房東(服務(wù)端)的房
C真實(shí)房東(服務(wù)端)只知道房子租給了B房產(chǎn)中介(代理),并不知道A租房人(客戶(hù)端)租了自己的房子
2、反向代理
A租房人(客戶(hù)端)要租B房產(chǎn)中介(代理)的房
B房產(chǎn)中介(代理)從C真實(shí)房東(服務(wù)端)手里租了A租房人(客戶(hù)端)想要租的房
A租房人(客戶(hù)端)不知道這套房子真實(shí)房東是C真實(shí)房東(服務(wù)端)
C真實(shí)房東(服務(wù)端)不知道自己的房子被A租房人(客戶(hù)端)租住
正向代理和反向代理配置
1、正向向代理配置
問(wèn)A服務(wù)器的ip不是118.126.106.11(B代理服務(wù)器)則返回403
B服務(wù)器(代理服務(wù)器)/etc/nginx/conf.d/default.conf。添加resolver和proxy_pass,設(shè)置如下
2、反向代理配置
首先在/etc/nginx/conf.d/下新建一個(gè)test.conf
可以看到我server里listen的8080端口,但是我的服務(wù)器本身不對(duì)外開(kāi)放8080端口,只開(kāi)放了80端口。所以此時(shí)訪(fǎng)問(wèn)test.html是訪(fǎng)問(wèn)不到的
然后我們打開(kāi)/etc/nginx/conf.d/default.conf 添加proxy_pass設(shè)置如下
設(shè)置當(dāng)匹配test.html結(jié)尾的URL時(shí)就去代理訪(fǎng)問(wèn)本機(jī)的8080端口。注釋掉,然后直接80端口訪(fǎng)問(wèn)以下test.html,是無(wú)法正問(wèn)訪(fǎng)問(wèn)的
把標(biāo)紅處設(shè)置代理的內(nèi)容釋放掉后,就可以正常訪(fǎng)問(wèn)到test.html文件了,即此時(shí)便可訪(fǎng)問(wèn)8080端口配置的資源。
以上便是完成了一個(gè)反向代理的演示,這個(gè)過(guò)程中我們可以知道,客戶(hù)端想要訪(fǎng)問(wèn)的是test.html,但是test.html實(shí)際上是8080端口下配置的,中間經(jīng)過(guò)了代理才能拿到。也就是客戶(hù)端并不知道中間經(jīng)歷了什么代理過(guò)程,只有服務(wù)端知道。客戶(hù)端只知道他拿到了test.html也就是8080端口下配置的資源內(nèi)容。
正向代理的代理對(duì)象時(shí)客戶(hù)端,反向代理的代理對(duì)象時(shí)服務(wù)端。代理服務(wù)器站在客戶(hù)端那邊就是正向代理,代理服務(wù)器站在原始服務(wù)器那邊 就是反向代理。nginx通過(guò)proxy_pass可以設(shè)置代理服務(wù)。
到此這篇關(guān)于深度詳解什么是Nginx正向代理與反向代理的文章就介紹到這了,更多相關(guān)Nginx正向代理與反向代理內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!
相關(guān)文章:
