首頁 > 軟體

深度詳解什麼是Nginx正向代理與反向代理

2023-03-23 22:07:44

正向代理和反向代理的概念

1、正向代理


它的工作原理就像一個跳板,簡單的說,我是一個使用者,我存取不了某網站,但是我能存取一個代理伺服器,這個代理伺服器呢,他能存取那個我不能存取的網站,於是我先連上代理伺服器,告訴他我需要那個無法存取網站的內容,代理伺服器去取回來,然後返回給我,從網站的角度,只在代理伺服器來取內容的時候有一次記錄,有時候並不知道是使用者的請求,也隱藏了使用者的資料,這取決於代理告不告訴網站。

結論就是 :

正向代理 是一個位於使用者端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,使用者端向代理傳送一個請求並指定目標(原始伺服器),然後代理向原始伺服器轉交請求並將獲得的內容返回給使用者端。使用者端必須要進行一些特別的設定才能使用正向代理。就像要存取google用vpn代理翻牆去存取(使用者知道要存取真正的伺服器)

2、反面代理


反向代理:例使用者存取 https://www.baidu.com/readme

但https://www.baidu.com上並不存在readme頁面,他是偷偷從另外一臺伺服器上取回來,然後作為自己的內容吐給使用者,但使用者並不知情,這裡所提到的 https://www.baidu.com 這個域名對應的伺服器就設定了反向代理功能。

結論就是:

反向代理正好相反,對於使用者端而言它就像是原始伺服器,並且使用者端不需要進行任何特別的設定。使用者端向反向代理 的名稱空間(name-space)中的內容傳送普通請求,接著反向代理將判斷向何處(原始伺服器)轉交請求,並將獲得的內容返回給使用者端,就像這些內容 原本就是它自己的一樣。(使用者不知道要存取真正的伺服器)

以租房為例解釋正向代理和反向代理?

使用者端 <一> 代理 <一>伺服器端
A租房人(使用者端),B房產中介(代理),C真實房東(伺服器端)

1、正向代理

A租房人(使用者端)想租C真實房東的房子,但不認識C真實房東(伺服器端
B房產中介(代理)認識C真實房東(伺服器端),並且從C真實房東(伺服器端)租到了房
A租房人(使用者端)通過B房產中介(代理)租到了C真實房東(伺服器端)的房
C真實房東(伺服器端)只知道房子租給了B房產中介(代理),並不知道A租房人(使用者端)租了自己的房子

2、反向代理

A租房人(使用者端)要租B房產中介(代理)的房
B房產中介(代理)從C真實房東(伺服器端)手裡租了A租房人(使用者端)想要租的房
A租房人(使用者端)不知道這套房子真實房東是C真實房東(伺服器端)
C真實房東(伺服器端)不知道自己的房子被A租房人(使用者端)租住

正向代理和反向代理設定

1、正向向代理設定

問A伺服器的ip不是118.126.106.11(B代理伺服器)則返回403


B伺服器(代理伺服器)/etc/nginx/conf.d/default.conf。新增resolver和proxy_pass,設定如下

2、反向代理設定

首先在/etc/nginx/conf.d/下新建一個test.conf

可以看到我server裡listen的8080埠,但是我的伺服器本身不對外開放8080埠,只開放了80埠。所以此時存取test.html是存取不到的

然後我們開啟/etc/nginx/conf.d/default.conf 新增proxy_pass設定如下

設定當匹配test.html結尾的URL時就去代理存取本機的8080埠。註釋掉,然後直接80埠存取以下test.html,是無法正問存取的

把標紅處設定代理的內容釋放掉後,就可以正常存取到test.html檔案了,即此時便可存取8080埠設定的資源。

以上便是完成了一個反向代理的演示,這個過程中我們可以知道,使用者端想要存取的是test.html,但是test.html實際上是8080埠下設定的,中間經過了代理才能拿到。也就是使用者端並不知道中間經歷了什麼代理過程,只有伺服器端知道。使用者端只知道他拿到了test.html也就是8080埠下設定的資源內容。

正向代理的代理物件時使用者端,反向代理的代理物件時伺服器端。代理伺服器站在使用者端那邊就是正向代理,代理伺服器站在原始伺服器那邊 就是反向代理。nginx通過proxy_pass可以設定代理服務。

到此這篇關於深度詳解什麼是Nginx正向代理與反向代理的文章就介紹到這了,更多相關Nginx正向代理與反向代理內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com