一、背景介紹
nginx (engine x) 是一個高性能的HTTP和反向代理服務器,Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件代理服務器。其特點是占有內存少,并發(fā)能力強,事實上nginx的并發(fā)能力確實在同類型的網(wǎng)頁服務器中表現(xiàn)較好,中國大陸使用nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。
二.知識剖析
1.代理服務器
一般是指局域網(wǎng)內部的機器通過代理服務器發(fā)送請求到互聯(lián)網(wǎng)上的服務器,代理服務器一般作用在客戶端。 一個完整的代理請求過程為:客戶端首先與代理服務器創(chuàng)建連接,接著根據(jù)代理服務器所使用的代理協(xié)議,請求對目標服務器創(chuàng)建連接、或者獲得目標服務器的指定資源。 Web代理(proxy)服務器是網(wǎng)絡的中間實體。 代理位于Web客戶端和Web服務器之間,扮演“中間人”的角色。HTTP的代理服務器即是Web服務器又是Web客戶端。
2.正向代理
正向代理 是一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發(fā)送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
3.反向代理
反向代理 在計算機世界里,由于單個服務器的處理客戶端(用戶)請求能力有一個極限,當用戶的接入請求蜂擁而入時,會造成服務器忙不過來的局面,可以使用多個服務器來共同分擔成千上萬的用戶請求,這些服務器提供相同的服務,對于用戶來說,根本感覺不到任何差別。在服務器端接受客戶端的請求,然后把請求分發(fā)給具體的服務器進行處理,然后再將服務器的響應結果反饋給客戶端。
4.反向代理的實現(xiàn)
1)需要有一個負載均衡設備來分發(fā)用戶請求,將用戶請求分發(fā)到空閑的服務器上;
2)服務器返回自己的服務到負載均衡設備;
3)負載均衡將服務器的服務返回用戶;
三.常見問題
1.正向代理和反向代理有什么區(qū)別
2.為什么使用反向代理
四.解決方案
答:1.兩者的區(qū)別在于代理的對象不一樣:正向代理代理的對象是客戶端,反向代理代理的對象是服務端。
答:2.便于服務器分布擴展。在實際中單個服務器處理客戶端請求能力有一個極限,當請求量過大,則服務器忙不過來,因此使用多個服務器來共同分擔用戶的請求處理,這些服務器提供相同的服務,對于用戶來說沒有差別。那么就需要一個負載均衡設備來分發(fā)用戶的請求到空閑的服務器上,然后服務器返回結果到負載均衡設備上,負載均衡再將其返回給用戶。這樣當增加/移除某臺服務器時,只需要修改負載均衡的服務器列表,而不會影響服務器;安全。避免ip和端口直接暴露在internet,使主機免于被開采安全漏洞,代理服務器數(shù)量有限,安全防護更方便。
五、參考文獻
百度,書籍
六.更多討論
1. 負載均衡幾種算法?
答:輪詢(Round Robin)法,隨機(Random)法,源地址哈希(Hash)法,加權輪詢(Weight Round Robin)法,加權隨機(Weight Random)法,最小連接數(shù)(Least Connections)法。
2.配置里面哪個server name什么意思?
答:
Nginx中的server_name指令主要用于配置基于名稱的虛擬主機,server_name指令在接到請求后的匹配順序分別為:
1、準確的server_name匹配
2、以*通配符開始的字符串
3、以*通配符結束的字符串
4、匹配正則表達式:
3.反向代理和負載均衡有何區(qū)別?
答:反向代理是實現(xiàn)負載均衡的一種方法。先談反向代理。用戶在請求時,先把請求發(fā)送給代理的服務器,然后由代理服務器根據(jù)算法去請求真實的服務器,最后返回給用戶。這種做法,其一是提高了安全性;其二是通過多臺的real server分擔了用戶的請求,實現(xiàn)了負載均衡。再談負載均衡。負載均衡的出現(xiàn),是通過橫向的擴展,盡可能地降低單臺服務器的壓力。常見WEB層面的負載均衡的方案有硬件F5、Nginx代理、LVS、各個云商的負載均衡服務(如AWS的ELB服務)等。負載均衡后面連的一般是實際提供服務的服務器,如通過ELB服務,可以做到流量的均勻分擔,從而減少單機服務器的壓力。
更多Nginx相關技術文章,請訪問Nginx教程欄目進行學習!