[nginx官方網站](https://www.nginx.com/)
[nginx.org](http://nginx.org/)
[wiki](https://www.nginx.com/resources/wiki/)
[docs](http://nginx.org/en/docs/)
## Nginx的特性
* 模塊化設計、較好擴展性
但不支持動態模塊加載,編譯時啟用的模塊在nginx啟動時會全部加載;1.9.11部分模塊支持DSO
* 高可靠性
master進程負責管理 worker進程的崩潰不會相互影響
* 低內存消耗
10000個keep-alive連接在Nginx僅消耗2.5MB
* 支持熱部署
不停機而更新配置文件、更換日志文件、更新服務器程序版本
## 基本HTTP功能
* 提供靜態文件和index文件,生成自動索引,緩存打開文件的描述符;
* 使用緩存加快反向代理和FastCGI訪問;
* 模塊化結構,過濾器包括gzip,字節range,chunk響應,XSLT,SSI(Server Side Include),圖像大小調;整,被傳到后臺服務器的多個SSI指令在單個頁面并行處理;
* 支持SSL和TLS SNI;
## 其他HTTP功能
* 基于名稱和IP的虛擬服務器;
* 基于客戶端IP和HTTP基本認證的訪問控制;
* 支持keepalive和管道連接;
* 平滑的重新配置和在線升級;
* 定制訪問日志格式,緩存日志寫入和快速日志輪詢;
* 3xx-5xx錯誤重定向,定制錯誤頁面;
* 支持url rewrite;
* FLV流文件;
* 速度限制;
* 限制同時連接數或者來自同一個IP地址的請求;
## 郵件代理服務器
## 架構和可擴展性
* 一個主進程和多個工作進程,工作進程以非特權用戶運行;
主進程必須以管理員身份啟動(啟動<1023端口必須使用管理員身份),主進程用來監控和管理工作進程;主進程加載配置文件后,若有錯誤,不會影響工作進程;重新再加載正確后,新的連接建立時使用新配置。
* 支持的事件機制的IO框架
kqueue(FreeBSD 4.1+)、epoll(Linux 2.6+)、rt signals(Linux 2.2.19+)、/dev/poll(Solaris 7 11/99+)、event ports(Solaris 10)、select以及poll(次之);
眾多支持的kqueue特性包括EV\_CLEAR、EV\_DISABLE(臨時禁止事件)、NOTE\_LOWAT、EV\_EOF,可用數據的數量,錯誤代碼;
* 支持sendfile(FreeBSD 3.1+, Linux 2.2+, Mac OS X 10.5+)、sendfile64(Linux 2.4.21+)和sendfilev(Solaris 8 7/01+);
用戶請求響應不經過用戶空間,報文在內核完成http封裝直接從內核響應給客戶端,避免了響應報文從內核復制到用戶空間,再從用戶空間復制到內核空間在響應給客戶,盡可能避免數據拷貝操作。
* 文件AIO(FreeBSD 4.3+, Linux 2.6.22+);
* DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, Mac OS X);
* 支持Accept-filters(FreeBSD 4.1+, NetBSD 5.0+)和 TCP\_DEFER\_ACCEPT(Linux 2.4+);
* 支持連接過濾器,限制連接數
* 10000個非活躍的HTTP keep-alive連接僅占用約2.5M內存;
## 模塊類型
* 核心模塊
* Standard HTTP modules 標準http模塊
* Optional HTTP modules 可選http模塊
* Mail modules 郵件模塊
* 3rd party modules 第三方模塊