5分鍾徹底了解Nginx的反向代理


前言

眾所周知,Nginx是現如今最熱門的反向代理服務器了,並且通Apache一樣都是屬於web服務器。Apache的主要優點是穩定和支持跨平台,但是受限於Apache誕生的年代較早,互聯網環境遠沒有現如今的復雜,所以Apache設計之初是重量級的並且不支持高並發。
正所謂時勢造英雄,於是支持高並發的Nginx就誕生了,Nginx是基於事件驅動架構,所以可以支持百萬級的TCP連接,Nginx是一款自由的、開源的、高性能的HTTP服務器和反向代理服務器;同時也是一個IMAP、POP3、SMTP代理服務器;Nginx可以作為一個HTTP服務器進行網站的發布處理,另外Nginx可以作為反向代理進行負載均衡的實現。


正向代理和反向代理

首先的了解什么是代理,一個代理過程涉及三個角色: 代理對象、被代理對象、目標對象,三個角色關系如下:

被代理對象委托代理對象訪問目標對象

以打官司為例,張三想要打官司於是請了李四律師幫忙打官司,那么張三就是被代理對象,不用親自打官司,而是委托代理對象李四律師;李四律師就是代理對象,代理張三打官司事務;而目標對象就是打官司。


正向代理

假設我們需要訪問國外的網站比如Google,此時可能通過國內的瀏覽器是如何直接訪問Google的,此時假設有一台服務器可以訪問Google,並且國內的客戶端可以訪問這台服務器,那么就可以將這台服務器叫做正向代理服務器。
國內客戶端將請求發送給代理服務器,代理服務器再將請求發送給Google,此時就完成了一次正向代理的過程。
如下圖示:
image

可以發現正向代理有幾個特點:

1、客戶端明確知道要訪問的具體服務器地址

2、目標服務器不知道客戶端信息,只知道所有請求都是由代理服務器發送過來的。

3、客戶端需要配置代理服務器信息

所以正向代理代表的是客戶端,代客戶端發送請求。客戶端將請求發送給代理服務器,代理服務器將請求轉發給目標服務器,目標服務器將請求結果返回給代理服務器,代理服務器再將結果返回給客戶端。

正向代理的用途

1、訪問原本無法訪問或不想直接訪問的資源,比如訪問國外資源等;

2、緩存,代理服務器可以將目標服務器的資源進行緩存,這樣客戶端可以直接從代理服務器獲取緩存數據;

3、管控客戶端行為,記錄客戶端請求日志等;


反向代理

以淘寶為例,為了應付高並發請求,淘寶服務器會采用集群的方式部署服務器,這樣客戶端就不知道將請求發送到哪一台服務器,假設有一台服務器可以根據規則來將客戶端請求進行轉發,那么就可以將這台服務器叫做反向代理服務器。
客戶端將請求發送給代理服務器,服務器根據轉發策略,選取一台服務器進行轉發,這樣就完成了一個反向代理的過程。
如下圖示:
image
可以發現反向代理有幾個特點:

1、客戶端並不知道要訪問的具體服務器地址,具體服務器地址是由代理服務器選擇的。

2、客戶端並不需要配置代理服務器信息,代理服務器對於客戶端而言是透明的

3、目標服務器是知道請求是由哪個客戶端請求過來的

所以反向代理代表的是服務器,代服務器接收請求,客戶端將請求發送給代理服務器,代理服務器將請求轉發給目標服務器,目標服務器將請求結果返回給代理服務器,代理服務器再將結果返回個客戶端。

反向代理的用途

1、保護服務器安全,服務器內網部署即可,而只需要將代理服務器暴露到外網

2、負載均衡,通過代理服務器來根據負載均衡策略維護服務器的請求數


總結

正向代理代理的是客戶端發送請求,客戶端和代理服務器處於同一個網絡環境,隱藏了客戶端信息

正向代理主要作用是訪問不可訪問的資源和統一管控客戶端請求

反向代理代理的是服務器接收請求,服務器和代理服務器處於同一個網絡環境,隱藏了服務器信息

反向代理主要作用是保護內網服務器和負載路由轉發

本質上正向代理和反向代理都是處於客戶端和服務器之間的角色,客戶端都是將請求給代理,代理將請求轉發給服務器的過程。而實際應用場景中,往往可能是同時存在正向代理和反向代理的,如下圖示:

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM