1. 程式人生 > >【Linux Nginx實戰】之初識Nginx(一)

【Linux Nginx實戰】之初識Nginx(一)

Nginx LNMP 實戰

1.Nginx是什麽?

nginx是一款高性能的HTTP和反向代理服務器軟件,第一個開源版本誕生於2004年,雖然誕生較晚但經過十多年的發展,已經成為非常流行的web服務器軟件,下圖是w3techs公布的全球網站服務器軟件統計報告
技術分享圖片

2.Nginx為什麽流行?

首先,nginx的特性迎合了市場的發展趨勢,近幾年來,隨著硬件成本的降低,個人電腦和移動設備得到了普及,高並發的流量成為網站必須應對的問題。而Nginx就是為性能而生,從發布以來一直側重於高性能,高並發,低CPU內存消耗;在功能方面:負載均衡,反向代理,訪問控制,熱部署,高擴展性等特性又十分適合現代的網絡架構。更可貴的是配置簡單文檔豐富,大大降低了學習的門檻。

3.Nginx和Apache 有什麽共同之處

    1. 同是HTTP服務器軟件,都采用模塊化結構設計
    1. 支持通用語言接口,如PHP,Python等
    1. 支持正向代理和反向代理
      3.4. 支持虛擬主機及ssl加密傳輸
      3.5. 支持緩存及壓縮傳輸
      3.6. 支持URL重寫
      3.7. 模塊多,擴展性強
      3.8. 多平臺支持

4.Nginx的優勢

4.1 輕量級 安裝文件小 運行時CPU內存使用率低
4.2 性能強 支持多核,處理靜態文件效率高,內核采用的poll模型最大可以支持50K並發連接
4.3 支持熱部署 同時啟動速度快,可以在不間斷服務的情況下對軟件和配置進行升級
4.4 負載均衡 支持容錯和健康檢查

4.5 代理功能強大 支持無緩存的反向代理,同時支持IMAP/POP3/SMTP的代理

5.Nginx的劣勢

5.1 相比Apache 模塊要少一些,常用模塊都有了,而且支持LUA語言擴展功能
5.2 對動態請求支持不如apache
5.3 Windows 版本功能有限 ,受限於windows的特性,支持最好的還是*unix系統

Nginx的組成

Nginx的各種功能和操作都由模塊來實現。Nginx的模塊從結構上分為核心模塊、基礎模塊和第三方模塊。

核心模塊: HTTP模塊、EVENT模塊和MAIL模塊
基礎模塊: HTTP Access模塊、HTTP FastCGI模塊、HTTP Proxy模塊和HTTP Rewrite模塊
第三方模塊: HTTP Upstream Request Hash模塊、Notice模塊和HTTP Access Key模塊及用戶自己開發的模塊

這樣的設計使Nginx方便開發和擴展,使得Nginx功能如此強大。Nginx的模塊默認編譯進nginx中,如果需要增加或刪除模塊,需要重新編譯Nginx,這一點不如Apache的動態加載模塊方便。

Nginx 使用的架構

LNMP

技術分享圖片

web歷史上最流行最經典的環境是LAMP(Linux + Apache + Mysql + PHP),至今仍有大量網站采用此架構,Apache默認配置在未優化的情況下比較占用CPU和內存。借助於Nginx的輕量和高性能,LNMP架構只是將LAMP環境中的Apache換成Nginx,於是另一經典LNMP架構就誕生了。LNMP在服務器硬件配置相同時,相對於LAMP會使用更少的CPU和內存,是小型網站,低配服務器,和VPS的福音。

當然,Nginx還有其他的架構,但在後續的文章中,我只會使用到這個結構,所以其他的暫不列舉說明。

【Linux Nginx實戰】之初識Nginx(一)