高性能的HTTP和反向代理web服務器—nginx的介紹
1. 什麼是nginx
Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫爲俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發佈於2004年10月4日。
其將源代碼以類BSD許可證的形式發佈,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發佈。
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特點是佔有內存少,併發能力強,事實上nginx的併發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。
2. nginx的作用
- 反向代理
反向代理(Reverse Proxy)方式是指以代理服務器來接受 internet上 的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給 internet 上請求連接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。
- 負載均衡
負載均衡就是將一個任務分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務,簡單而言就是當有2臺或以上服務器時,根據規則隨機的將請求分發到指定的服務器上處理。負載均衡配置一般都需要同時配置反向代理,通過反向代理跳轉到負載均衡,而Nginx目前支持自帶3種負載均衡策略,還有2種常用的第三方策略。
- HTTP服務器
Nginx本身也是一個靜態資源的服務,當只有靜態資源的時候,就可以使用Nginx來做服務器,同時現在也很流行動靜分離,就可以通過Nginx來實現。動靜分離是讓動態網站裏的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以後,我們就可以根據靜態資源的特點將其做緩存操作,這就是網站靜態化處理的核心思路。
- 正向代理
正向代理,是一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器),然後代理向原始服務器轉交請求並將獲得的內容返回給客戶端,客戶端才能使用正向代理。當需要把你的服務器作爲代理服務器時,可以用Nginx來實現正向代理。
3. nginx的優缺點
3.1 優點
- 高併發量:根據官方給出的數據,能夠支持高達 50,000 個併發連接數的響應
- 簡單穩定:配置簡單,基本在一個conf文件中配置,性能比較穩定,可以7*24小時長時間不間斷運行
- 內存消耗少:處理靜態文件,同樣起web 服務,比apache 佔用更少的內存及資源,所以它是輕量級的
- 模塊化程度高:Nginx是高度模塊化的設計,編寫模塊相對簡單,包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter,支持 SSL 和 TLSSNI。
- 支持Rwrite重寫規則:能夠根據域名、URL的不同, 將HTTP請求分發到不同的後端服務器羣組。
- 低成本:Nginx可以做高併發的負載均衡,且Nginx是開源免費的,如果使用F5等硬件來做負載均衡,硬件成本比較高。
- 支持多系統:Nginx代碼完全用C語言從頭寫成,已經移植到許多體系結構和操作系統,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows,由於Nginx是免費開源的,可以在各系統上編譯並使用。
3.1 缺點
- 動態處理差:nginx處理靜態文件好,耗費內存少,但是處理動態頁面則很雞肋,現在一般前端用nginx作爲反向代理抗住壓力,apache作爲後端處理動態請求。
- rewrite弱:雖然nginx支持rewrite功能,但是相比於Apache來說,Apache比nginx 的rewrite 強大。