Nginx正向代理和反向代理

2024-09-30雲端運算與程式碼1526

 一、正向代理


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點怎麼設置及設置例子

mark點怎麼設置及設置例子

mark 元素用於標記或高亮文本,非常適合用於文本搜索和結果導航。要在文本中使用 mark 元素,只需要將需要高亮的文本放在 mark 元素內即可。通常情況下,瀏覽器默認為高亮文本設置為黃色。 .highlight {    background-color: lightblue;    color: white;  }```上述代碼會將 mark 元素的背景顏色設置為淺藍色,文本顏色設置為白色。根據實際需要,您可以將顏色更改為您想要的顏色。…

視頻嵌入代碼,簡單的 video 嵌入代碼例子

視頻嵌入代碼,簡單的 video 嵌入代碼例子

視頻嵌入代碼,簡單的 video 嵌入代碼例子:- height:視頻高度。- controls:為 true 時,添加視頻控制條。- source:指定視頻文件路徑和類型,可支持多種類型。- Your browser does not support the video tag:如果用戶的瀏覽器不支持 HTML5  標記,則會顯示此消息。值得註意的是,這種視頻嵌入方式可能會因為用戶瀏覽器兼容性問題而無法播放,因此可能需要添加備用方案,如 Flash 等。同時,需要根據實際情況調整視頻的寬高比例、大小和文件大小等參數,以便更好地適配不同的設備和網絡環境。…

JS跳轉頁面代碼及例子

JS跳轉頁面代碼及例子

JS跳轉頁面是一種很常見的前端交互技術,下面是幾種跳轉頁面的方式:1. 直接修改 `window.location.href` 屬性,2. 使用 `window.location.replace` 方法,此方法會替換當前頁面歷史記錄,不會在瀏覽器歷史記錄中留下痕跡。3. 使用 `window.open` 方法在一個新的瀏覽器窗口或標簽頁中打開一個頁面,4. 如果你需要在某個時間間隔後自動跳轉到目標頁面,可以使用 `setTimeout` 函數。…

星空特效的HTML代碼示例

星空特效的HTML代碼示例

以下是一個星空特效的HTML代碼示例:這個代碼會在頁面背景中生成100個閃爍的星星,使得整個頁面看起來像是夜空中的星空。可以在瀏覽器中運行查看效果。這些代碼可以在瀏覽器中運行並產生相應的星空特效。…

HTML標簽屬性大全及代碼例子

HTML標簽屬性大全及代碼例子

在HTML中,屬性是在標簽中使用的特殊命令,它們提供了額外的信息以更好地描述標簽的內容和行為。屬性名表示該屬性的名稱,而屬性值表示該屬性要設置的值。HTML標簽屬性有很多種類和用途,它們可以影響標簽的內容、顏色、尺寸、超鏈接、樣式、表單等方面。一些常見的HTML標簽屬性包括:class、id、style、href、src、alt、disabled、checked、selected等等。在學習HTML標簽屬性時,需要註意一些細節和常見錯誤。總而言之,HTML標簽屬性是控制網頁顯示和行為的重要方式。HTML標簽屬性是可以用於定義HTML元素的附加信息。…

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

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

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