1. 程式人生 > >Nginx運維之一 反向代理、動靜分離、負載均衡

Nginx運維之一 反向代理、動靜分離、負載均衡

Nginx運維之一 反向代理、動靜分離、負載均衡

Nginx簡述

Nginx是lgor Sysoev為俄羅斯訪問量第二的rambler.ru站點設計開發的。從2004年釋出至今,憑藉開源的力量,已經接近成熟與完善。

Nginx功能豐富,可作為HTTP Web伺服器,也可作為反向代理負載均衡伺服器,郵件伺服器等。支援FastCGI、SSL、Virtual Host、URL Rewrite、Gzip

等功能。並且支援很多第三方的模組擴充套件。

Nginx 優勢功能

  • 作為 Web 伺服器:相比 Apache,Nginx 使用更少的資源,支援更多的併發連線,體現更高的效率,這點使 Nginx 尤其受到虛擬主機提供商的歡迎。能夠支援高達 50,000 個併發連線數的響應,感謝 Nginx 為我們選擇了epoll and kqueue作為開發模型.

  • 作為負載均衡伺服器:Nginx 既可以在內部直接支援 Rails 和 PHP,也可以支援作為 HTTP代理伺服器 對外進行服務。Nginx 用 C 編寫, 不論是系統資源開銷還是 CPU 使用效率都比 Perlbal 要好的多。

  • 作為郵件代理伺服器

    : Nginx 同時也是一個非常優秀的郵件代理伺服器(最早開發這個產品的目的之一也是作為郵件代理伺服器),Last.fm 描述了成功並且美妙的使用經驗。

Tengine

Tengine是由淘寶網發起的Web伺服器專案。它在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高階功能和特性。Tengine的效能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。官網

反向代理

要說反向代理,我們就先要理解正向代理

正向代理

在如今的網路環境下,我們如果由於技術需要要去訪問國外的某些網站,此時你會發現位於國外的某網站我們通過瀏覽器是沒有辦法訪問的,此時大家可能都會翻牆進行訪問,翻牆的方式主要是找到一個可以訪問國外網站的代理伺服器,我們將請求傳送給代理伺服器,代理伺服器去訪問國外的網站,然後將訪問到的資料傳遞給我們!

正向代理

上述這樣的代理模式稱為正向代理,正向代理最大的特點是客戶端非常明確要訪問的伺服器地址;最終伺服器只清楚請求來自哪個代理伺服器,而不清楚來自哪個具體的客戶端;正向代理模式遮蔽或者隱藏了真實客戶端資訊。

正向代理總結就一句話:代理端代理的是客戶端。

反向代理

反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個反向代理伺服器。

例如,當用戶去某寶購買東西,我們根本不用關心某寶後臺具體是怎麼配置的,我只知道我訪問某寶的代理伺服器,代理伺服器會代理所有的伺服器提供資料給我們。

反向代理

反向代理總結就一句話:代理端代理的是服務端。

動靜分離

動靜分離是讓動態網站裡的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以後,我們就可以根據靜態資源的特點將其做快取操作,這就是網站靜態化處理的核心思路。

動靜分離簡單的概括是:動態資源與靜態資源的分離。

在我們的軟體開發中,有些請求是後段的動態資料,有些請求是不需要經過後臺處理的靜態資源(如:css、html、image、js等等檔案),這些不需要經過後臺處理的資源稱為靜態資源,否則即是動態資源。
動靜分離將網站靜態資源(HTML,JavaScript,CSS,img等檔案)與後臺應用分開部署,提高使用者訪問靜態程式碼的速度,降低對後臺應用訪問。例如我們將靜態資源放到nginx中,動態資源轉發到tomcat伺服器中。

負載均衡

網際網路早期,業務流量比較小並且業務邏輯比較簡單,單臺伺服器便可以滿足基本的需求;但隨著網際網路的發展,業務流量越來越大並且業務邏輯也越來越複雜,單臺機器的效能問題以及單點問題凸顯了出來,因此需要多臺機器來進行效能的水平擴充套件以及避免單點故障。但是要如何將不同的使用者的流量分發到不同的伺服器上面呢?

負載均衡的思想是將客戶端的流量首先發送掃負載均衡伺服器,由負載均衡伺服器通過一定的排程演算法將流量分發到不同的應用伺服器上面來解決單臺機器的併發壓力。

舉例來說,比如某寶網站,每天同時連線到網站的訪問人數已經爆表,單個伺服器遠遠不能滿足人民日益增長的購買慾望了,此時就需要越來越多的伺服器來解決單臺機器併發訪問人數限制的問題;

負載均衡