NGINX是一個免費、開源、高性能、輕量級的HTTP和反向代理服務器,也是一個電子郵件(IMAP/POP3)代理服務器nginx
特色:web
佔有內存少,併發能力強後端
Nginx的優勢:服務器
模塊化、事件驅動、異步、非阻塞、多進程單線程架構
1.內部結構併發
Nginx 的內部結構是由核心部分和一系列的功能模塊所組成負載均衡
(1) 內核異步
提供web服務的基本功能模塊化
經過查找配置文件將客戶端請求映射到一個location block,而後將這個location block中所配置的每一個指令將會啓動不一樣的模塊去完成相應的工做性能
(2) 模塊
Nginx的各類功能和操做都由模塊來實現
從結構上分:
核心模塊:HTTP模塊、EVENT模塊和MAIL模塊
基礎模塊:HTTP Access模塊、HTTP FastCGI模塊、HTTP Proxy模塊和HTTP Rewrite模塊
第三方模塊: HTTP Upstream Request Hash模塊、Notice模塊和HTTP Access Key模塊
從功能上分:
Handlers(處理器模塊):此類模塊直接處理請求,並進行輸出內容和修改 headers 信息等操做。Handlers 處理器模塊通常只能有一個
Filters(過濾器模塊):此類模塊主要對其餘處理器模塊輸出的內容進行修改操做,最後由 Nginx 輸出
Proxies(代理類模塊):此類模塊是 Nginx 的 HTTP Upstream 之類的模塊,這些模塊主要與後端一些服務好比FastCGI 等進行交互,實現服務代理和負載均衡等功能
2.模塊化設計
模塊化設計是nginx的架構基礎
模塊化設計使得Nginx方便開發和擴展,功能很強大
可是Nginx的模塊默認編譯進nginx中,若是須要增長或刪除模塊,須要從新編譯Nginx,不如Apache的動態加載模塊方便
3.請求處理
Nginx 將各功能模塊組織成一條鏈,當有請求到達的時候,請求依次通過這條鏈上的部分或者所有模塊,進行處理
每一個模塊實現特定的功能
一個 HTTP Request 的處理過程:
初始化 HTTP Request
處理請求頭、處理請求體
若是有的話,調用與此請求(URL 或者 Location)關聯的 handler
依次調用各 phase handler 進行處理
輸出內容依次通過 filter 模塊處理