nginx
基本的 HTTP 伺服器功能 其他 HTTP 伺服器功能 郵件代理伺服器功能 TCP/UDP 代理伺服器功能 架構與擴展性 已測試的作業系統和平台 |
nginx(「engine x」)是一個 HTTP 網頁伺服器、反向代理、內容快取、負載平衡器、TCP/UDP 代理伺服器和郵件代理伺服器。 最初由 Igor Sysoev 編寫,並以 2-clause BSD 授權發布。
nginx 以其靈活性、高效能和低資源利用率而聞名,是
- 世界上最受歡迎的網頁伺服器 [Netcraft];
- 一直是最受歡迎的 Docker 映像檔之一 [DataDog];
- 為多個 Kubernetes 的 Ingress 控制器提供動力,包括 我們自己的。
企業版發行、商業支援和培訓可從 F5, Inc. 取得。
基本的 HTTP 伺服器功能
- 提供靜態檔案和 索引檔案、自動索引;開啟檔案描述符快取;
- 透過快取加速反向代理;負載平衡和容錯;
- 加速支援 FastCGI、uwsgi、SCGI 和 memcached 伺服器的快取;負載平衡和容錯;
- 模組化架構。 篩選器包括 gzip 壓縮、位元組範圍、分塊回應、XSLT、SSI 和 圖像轉換篩選器。 如果由代理或 FastCGI/uwsgi/SCGI 伺服器處理,則可以在單個頁面中並行處理多個 SSI 包含;
- SSL 和 TLS SNI 支援;
- 支援具備加權和基於優先順序的 HTTP/2;
- 支援 HTTP/3。
其他 HTTP 伺服器功能
- 基於名稱和 IP 的 虛擬伺服器;
- 保持連線和管線連線支援;
- 存取日誌格式、緩衝日誌寫入、快速日誌輪換和 syslog 日誌記錄;
- 3xx-5xx 錯誤代碼 重新導向;
- 重寫模組:使用正規表示式變更 URI;
- 根據 用戶端位址執行不同的功能;
- 基於 用戶端 IP 位址、透過密碼(HTTP 基本驗證)和 子請求的結果進行存取控制;
- 驗證 HTTP 來源網址;
- PUT、DELETE、MKCOL、COPY 和 MOVE 方法;
- FLV 和 MP4 串流;
- 回應速率限制;
- 限制來自一個位址的同時連線或請求數量;
- 基於 IP 的地理位置;
- A/B 測試;
- 請求鏡像;
- 嵌入式 Perl;
- njs 腳本語言。
郵件代理伺服器功能
- 使用外部 HTTP 驗證伺服器將使用者重新導向至 IMAP 或 POP3 伺服器;
- 使用外部 HTTP 驗證伺服器進行使用者驗證,並將連線重新導向至內部 SMTP 伺服器;
- 驗證方法
- SSL 支援;
- STARTTLS 和 STLS 支援。
TCP/UDP 代理伺服器功能
- TCP 和 UDP 的通用代理;
- TCP 的 SSL 和 TLS SNI 支援;
- 負載平衡和容錯;
- 基於用戶端位址的存取控制;
- 根據 用戶端位址執行不同的功能;
- 限制來自一個位址的同時連線數量;
- 存取日誌格式、緩衝日誌寫入、快速日誌輪換和 syslog 日誌記錄;
- 基於 IP 的地理位置;
- A/B 測試;
- njs 腳本語言。
架構與擴展性
- 一個主程序和多個工作程序;工作程序在非特權使用者下執行;
- 彈性配置;
- 在不中斷用戶端服務的情況下重新配置和升級可執行檔;
- 支援 kqueue (FreeBSD 4.1+)、epoll (Linux 2.6+)、/dev/poll (Solaris 7 11/99+)、事件埠 (Solaris 10)、select 和 poll;
- 支援各種 kqueue 功能,包括 EV_CLEAR、EV_DISABLE(用於暫時停用事件)、NOTE_LOWAT、EV_EOF、可用資料的數量、錯誤代碼;
- 支援各種 epoll 功能,包括 EPOLLRDHUP (Linux 2.6.17+,glibc 2.8+) 和 EPOLLEXCLUSIVE (Linux 4.5+,glibc 2.24+);
- sendfile (FreeBSD 3.1+、Linux 2.2+、macOS 10.5+)、sendfile64 (Linux 2.4.21+) 和 sendfilev (Solaris 8 7/01+) 支援;
- 檔案 AIO (FreeBSD 4.3+、Linux 2.6.22+);
- DIRECTIO (FreeBSD 4.4+、Linux 2.4+、Solaris 2.6+、macOS);
- 接受篩選器 (FreeBSD 4.1+、NetBSD 5.0+) 和 TCP_DEFER_ACCEPT (Linux 2.4+) 支援;
- 10,000 個非使用中的 HTTP 保持連線大約佔用 2.5M 的記憶體;
- 資料複製操作保持在最低限度。
已測試的作業系統和平台
- FreeBSD 3 — 12 / i386;FreeBSD 5 — 12 / amd64;FreeBSD 11 / ppc;FreeBSD 12 / ppc64;
- Linux 2.2 — 4 / i386;Linux 2.6 — 5 / amd64;Linux 3 — 4 / armv6l、armv7l、aarch64、ppc64le;Linux 4 — 5 / s390x;
- Solaris 9 / i386、sun4u;Solaris 10 / i386、amd64、sun4v;Solaris 11 / x86;
- AIX 7.1 / powerpc;
- HP-UX 11.31 / ia64;
- macOS / ppc、i386、x86_64;
- Windows XP、Windows Server 2003、Windows 7、Windows 10、Windows 11。