Nginx正向代理和反向代理

2024-09-30Cloud computing and code1540

 一、正向代理


Nginx正向代理和反向代理

1. 定義

   - 正向代理是代理服務器代替客戶端去訪問目標服務器。客戶端向代理服務器發送請求,代理服務器再向目標服務器請求資源,目標服務器將響應返回給代理服務器,最後代理服務器把響應傳遞給客戶端。


2. 特點

   - 隱藏客戶端身份:對於目標服務器來說,它看到的請求來源是代理服務器的IP地址,而不是客戶端的真實IP,從而隱藏了客戶端的身份。例如,在企業內部網絡中,員工通過企業設置的正向代理服務器訪問外部網站時,外部網站看到的是代理服務器的IP。

   - 突破訪問限制:可以用於突破某些網絡訪問限制。比如,在一些地區可能無法直接訪問某些網站,但通過設置正向代理服務器(位於可訪問區域)就可能實現訪問。


3. 配置示例(簡單配置)

server {
    resolver 8.8.8.8; # 設置DNS解析服務器
    listen 8080; # 代理服務器監聽端口
    location / {
        proxy_pass http://$http_host$request_uri; # 將請求轉發到目標服務器
    }
}


二、反向代理


1. 定義

   - 反向代理是代理服務器位於服務器端,接收互聯網用戶的請求,然後將請求轉發到內部網絡中的一個或多個後端服務器,最後將後端服務器的響應返回給互聯網用戶。


2. 特點

   - 隱藏後端服務器信息:對於客戶端來說,只能看到反向代理服務器的IP地址,不知道後端服務器的具體情況,包括數量、IP、架構等。例如,大型網站使用反向代理服務器,用戶訪問網站時並不知道背後有多少臺Web服務器在提供服務。

   - 負載均衡和高可用性:可以實現對後端服務器的負載均衡,將請求合理地分配到多個後端服務器上,提高系統的整體性能和可用性。如果其中一臺後端服務器出現故障,反向代理可以將請求轉發到其他正常的服務器上。


3. 配置示例(簡單配置)

upstream backend_pool {
    server 192.168.1.100; # 後端服務器IP
    server 192.168.1.101;
}
server {
    listen 80;
    location / {
        proxy_pass http://backend_pool; # 將請求轉發到後端服務器組
    }
}


三、正向代理和反向代理的區別


1. 代理位置與服務對象

   - 正向代理:代理服務器位於客戶端一側,主要服務於客戶端。它代替客戶端去訪問外部網絡資源,使得客戶端能夠間接獲取目標服務器的資源。例如,個人用戶使用正向代理來繞過網絡封鎖或者隱藏自己的真實訪問來源。

   - 反向代理:代理服務器位於服務器端,服務於後端服務器集群。它接收來自互聯網的請求,然後將這些請求分發給後端的服務器,最後把後端服務器的響應返回給客戶端。像大型網站,使用反向代理服務器來隱藏後端服務器的架構和分布情況。


2. 請求流向

   - 正向代理:請求的流向是客戶端→正向代理服務器→目標服務器。客戶端明確知道自己要訪問的目標服務器,只是通過正向代理服務器來實現訪問。例如,在企業網絡環境中,員工想要訪問特定的外部網站,請求先到企業的正向代理服務器,再由代理服務器轉發到目標網站服務器。

   - 反向代理:請求的流向是客戶端→反向代理服務器→後端服務器。客戶端只知道反向代理服務器的地址,而不知道具體的後端服務器。當用戶訪問一個網站時,請求先到達反向代理服務器,然後反向代理服務器根據負載均衡算法等將請求轉發到合適的後端服務器。


3. 目的側重

   - 正向代理:側重於保護客戶端的隱私和突破訪問限制。通過隱藏客戶端的真實IP地址,實現一定程度的匿名性,並且可以繞過一些網絡限制,訪問到客戶端原本無法直接訪問的資源。

   - 反向代理:側重於保護後端服務器和提高服務器的性能與可用性。隱藏後端服務器的信息可以防止後端服務器直接暴露在互聯網上,減少安全風險。同時,通過負載均衡等功能提高後端服務器的整體性能,確保在高流量情況下服務的穩定運行。


4. 對客戶端和服務器的可見性

   - 正向代理:目標服務器只能看到代理服務器的IP地址,無法得知客戶端的真實IP地址;而客戶端清楚自己的請求是通過代理服務器轉發到目標服務器的。

   - 反向代理:客戶端只能看到反向代理服務器的IP地址,不清楚後端服務器的具體情況;而後端服務器接收到的請求是來自反向代理服務器的,不知道客戶端的原始請求情況。

分享給朋友:

“Nginx正向代理和反向代理” 的相關文章

mark元素的主要功能及在HTML5 中的使用mark元素例子

mark元素的主要功能及在HTML5 中的使用mark元素例子

`<mark>` 元素的主要功能是突出顯示文本中的重要部分或關鍵字。在 HTML5 標準中,`<mark>` 元素用於標記一個文檔或一個段落中需要突出顯示的文本。一旦在 HTML 文件中使用了 `<mark>` 元素,瀏覽器通常會使用黃色背景標記該元素的文本,在頁面渲染上具有很好的效果。`<mark>` 元素還可以用於添加額外的視覺標識,以使讀者更快地識別重要內容。通過指定不同的顏色樣式,可以將文本突出顯示,以吸引讀者的註意力。…

html a標簽target屬性

html a標簽target屬性

HTML語言中的標簽用於定義超鏈接。其中,標簽有一個屬性叫做target,它用於指定鏈接在何處打開。目前,標簽的target屬性有以下四個取值:- _self:鏈接會在當前窗口中打開(默認值),這意味著打開新的文檔或資源時,頁面會在當前瀏覽器窗口中重新加載,並將新文檔或資源顯示在當前窗口中。基於以上講解,編寫標簽鏈接的代碼並使用target屬性指定打開方式的實例:< a href="htpps://sn.qunapu.com" target="_blank">打開示例網站。這段代碼表示鏈接將在新的瀏覽器窗口或標簽頁中打開,能夠實現用戶在訪問完畢後仍能保留原有瀏覽器窗口內容的體驗。…

一個簡單的 HTML5 導航菜單的示例代碼

一個簡單的 HTML5 導航菜單的示例代碼

以下是一個簡單的 HTML5 導航菜單的示例代碼,這個導航菜單使用了 HTML5 中的 `nav` 標簽來包裝整個菜單,使用了 Flex 布局來對菜單進行布局和對齊,同時也設置了一些簡單的樣式來美化菜單。…

一個簡單的html大海日出特效的代碼

一個簡單的html大海日出特效的代碼

以下是一個簡單的html大海日出特效的代碼:1. 使用html和css定義了一個大海和太陽的基本樣式;2. 使用animation讓太陽從初始位置向上升起,並且設置好其動畫屬性;3. 設置大海背景漸變和水面的動畫效果。…

用html和CSS3制作酷炫的導航欄代碼及例子

用html和CSS3制作酷炫的導航欄代碼及例子

使用HTML5和CSS3的新特性可以制作出很多酷炫的導航欄效果,例如下拉菜單、響應式導航欄、帶有動態效果的導航欄等等。下面以下拉菜單為例,具體步驟如下:1. 創建 HTML 結構;2. 設置基本樣式;3. 添加動態效果。這樣就可以制作出下拉菜單效果,當滑鼠懸停在菜單項上時,菜單項下面的下拉菜單顯示出來,同時菜單項上的箭頭指向上方,滑鼠移開時,下拉菜單消失。在此過程中,使用了CSS3的過渡效果和旋轉效果,使效果更加炫酷。  …

html零基礎入門教程及代碼演示例子

html零基礎入門教程及代碼演示例子

HTML是創建網頁的基礎語言。在互聯網的世界裏,網頁是我們獲取信息和與世界連接的主要途徑之一。因此,學習HTML是設計和制作網頁的重要一步。如果您是一個完全零基礎的人,那麼這份教程可以幫助您快速入門,並開始創建自己的網頁。在這個教程中,我們將探討HTML的基礎語法和標記,以及如何將它們組合在一起來構建一個簡單的網頁。無需任何預備知識,您只需要在計算機上安裝一個文本編輯器和瀏覽器,就可以開始學習HTML。讓我們開始!…