代理和反向代理


 

一、背景介紹

Nginx (engine x) 是一個高性能的HTTP和反向代理服務器,Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件代理服務器。其特點是占有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。

二.知識剖析

1.代理服務器

一般是指局域網內部的機器通過代理服務器發送請求到互聯網上的服務器,代理服務器一般作用在客戶端。 一個完整的代理請求過程為:客戶端首先與代理服務器創建連接,接着根據代理服務器所使用的代理協議,請求對目標服務器創建連接、或者獲得目標服務器的指定資源。 Web代理(proxy)服務器是網絡的中間實體。 代理位於Web客戶端和Web服務器之間,扮演“中間人”的角色。HTTP的代理服務器即是Web服務器又是Web客戶端。


2.正向代理


正向代理 是一個位於客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求並指定目標(原始服務器),然后代理向原始服務器轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。


3.反向代理

反向代理 在計算機世界里,由於單個服務器的處理客戶端(用戶)請求能力有一個極限,當用戶的接入請求蜂擁而入時,會造成服務器忙不過來的局面,可以使用多個服務器來共同分擔成千上萬的用戶請求,這些服務器提供相同的服務,對於用戶來說,根本感覺不到任何差別。在服務器端接受客戶端的請求,然后把請求分發給具體的服務器進行處理,然后再將服務器的響應結果反饋給客戶端。

4.反向代理的實現

1)需要有一個負載均衡設備來分發用戶請求,將用戶請求分發到空閑的服務器上;
2)服務器返回自己的服務到負載均衡設備;
3)負載均衡將服務器的服務返回用戶;

 

三.常見問題

1.正向代理和反向代理有什么區別

2.為什么使用反向代理

四.解決方案

答:1.兩者的區別在於代理的對象不一樣:正向代理代理的對象是客戶端,反向代理代理的對象是服務端。

答:2.便於服務器分布擴展。在實際中單個服務器處理客戶端請求能力有一個極限,當請求量過大,則服務器忙不過來,因此使用多個服務器來共同分擔用戶的請求處理,這些服務器提供相同的服務,對於用戶來說沒有差別。那么就需要一個負載均衡設備來分發用戶的請求到空閑的服務器上,然后服務器返回結果到負載均衡設備上,負載均衡再將其返回給用戶。這樣當增加/移除某台服務器時,只需要修改負載均衡的服務器列表,而不會影響服務器;安全。避免ip和端口直接暴露在internet,使主機免於被開采安全漏洞,代理服務器數量有限,安全防護更方便。

 

五.更多討論

1. 負載均衡幾種算法?

答:輪詢(Round Robin)法,隨機(Random)法,源地址哈希(Hash)法,加權輪詢(Weight Round Robin)法,加權隨機(Weight Random)法,最小連接數(Least Connections)法。

2.配置里面哪個server name什么意思?

答:

Nginx中的server_name指令主要用於配置基於名稱的虛擬主機,server_name指令在接到請求后的匹配順序分別為:

1、准確的server_name匹配

2、以*通配符開始的字符串

3、以*通配符結束的字符串

4、匹配正則表達式:

3.反向代理和負載均衡有何區別?

答:反向代理是實現負載均衡的一種方法。先談反向代理。用戶在請求時,先把請求發送給代理的服務器,然后由代理服務器根據算法去請求真實的服務器,最后返回給用戶。這種做法,其一是提高了安全性;其二是通過多台的real server分擔了用戶的請求,實現了負載均衡。再談負載均衡。負載均衡的出現,是通過橫向的擴展,盡可能地降低單台服務器的壓力。常見WEB層面的負載均衡的方案有硬件F5、Nginx代理、LVS、各個雲商的負載均衡服務(如AWS的ELB服務)等。負載均衡后面連的一般是實際提供服務的服務器,如通過ELB服務,可以做到流量的均勻分擔,從而減少單機服務器的壓力。

 


免責聲明!

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



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