Nginx的用武之地
Nginx是一款自由的、開源的、高效能的HTTP伺服器和反向代理伺服器;同時也是一個IMAP、POP3、SMTP代理伺服器;Nginx可以作為一個HTTP伺服器進行網站的發布處理,另外Nginx可以作為反向代理進行負載平衡的實作。
關於代理
說到代理,首先我們要明確一個概念,所謂代理就是一個代表、一個頻道;
此時就設計到兩個角色,一個是被代理角色,一個是目標角色,被代理角色透過這個代理訪問目標角色完成一些任務的過程稱為代理操作過程;如同生活中的專賣店~客人到adidas專賣店買了一雙鞋,這間專賣店就是代理,被代理角色就是adidas廠家,目標角色就是使用者。
正向代理
說反向代理之前,我們先看看正向代理,正向代理也是大家最常接觸的到的代理模式,我們會從兩個方面來說關於正向代理的處理模式,分別從軟體方面和生活方面來解釋一下什麼叫正向代理。
在現今的網路環境下,我們如果因為科技需要要去訪問國外的某些網站,此時你會發現位於國外的某網站我們透過瀏覽器是沒有辦法造訪的,此時大家可能都會用一個操作FQ進行訪問,FQ的方式主要是找到一個可以訪問國外網站的代理伺服器,我們將請求發送給代理伺服器,代理伺服器去訪問國外的網站,然後將訪問到的資料傳遞給我們!
上述這樣的代理模式稱為正向代理,正向代理最大的特點是客戶端非常明確要存取的伺服器位址;伺服器只清楚請求來自哪個代理伺服器,而不清楚來自哪個特定的客戶端;正向代理模式封鎖或隱藏了真實客戶端資訊。來看個示意圖(我把客戶端和正向代理框在一塊,同屬於一個環境):
客戶端必須設定正向代理伺服器,當然前提是要知道正向代理伺服器的IP位址,還有代理程式的連接埠。如圖。
總結來說:正向代理,"它代理的是客戶端",是位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向代理程式發送請求並指定目標(原始伺服器),然後代理程式向原始伺服器轉交請求並將獲得的內容傳回給客戶端。客戶端必須要進行一些特別的設定才能使用正向代理。
正向代理程式的用途:
存取原來無法存取的資源,如Google
可以做緩存,加速存取資源
對客戶端存取授權,上網進行認證
代理程式可以記錄使用者存取記錄(上網行為管理),對外隱藏使用者資訊
反向代理
明白了什麼是正向代理,我們繼續看關於反向代理的處理方式,舉例如我大天朝的某寶網站,每天同時連接到網站的訪問人數已經爆表,單一伺服器遠遠不能滿足人民日益增長的購買慾望了,此時就出現了一個大家耳熟能詳的名詞:分佈式部署;
#也就是透過部署多台伺服器來解決訪問人數限制的問題;某寶網站中大部分功能也是直接使用Nginx進行反向代理實現的,並且透過封裝Nginx和其他的元件之後起了個高大上的名字:Tengine。
有興趣的童鞋可以上Tengine的官網查看具體的資訊:http://tengine.taobao.org/。那麼反向代理具體是透過什麼樣的方式實現的分散式的叢集操作呢,我們先看一個示意圖(我把伺服器和反向代理框在一塊,同屬於一個環境):
#透過上述的圖解大家就可以看清楚了,多個客戶端給伺服器發送的請求,Nginx伺服器接收到之後,按照一定的規則分發給了後端的業務處理伺服器進行處理了。此時~請求的來源也就是客戶端是明確的,但是請求具體由哪台伺服器處理的並不明確了,Nginx扮演的就是一個反向代理角色。
客戶端是無感知代理的存在的,反向代理對外都是透明的,訪問者並不知道自己訪問的是一個代理。因為客戶端不需要任何設定就可以存取。
反向代理,"它代理的是服務端",主要用於伺服器叢集分散部署的情況下,反向代理隱藏了伺服器的資訊。
反向代理程式的作用:
確保內網的安全,通常將反向代理作為公網存取位址,Web伺服器是內網
負載平衡,透過反向代理伺服器來最佳化網站的負載
更多Nginx相關知識,請造訪Nginx使用教學欄位!
以上是nginx能幹什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!