Nginx教學
Nginx[讀音:engine x
]是HTTP和反向代理服務器,郵件代理服務器,以及Igor Sysoev最初編寫的通用TCP/UDP代理服務器。在很長一段時間以來,它一直在許多負載重的俄羅斯網站上運行,包括:Yandex,Mail.Ru,VK和Rambler。 根據Netcraft的說法,Nginx在2017年3月份服務或代理了28.50%
的最繁忙的網站。這裏有一些成功案例:Netflix,Wordpress.com,FastMail.FM。
源代碼和文檔按照兩條BSD類許可證分發。
商業支持可從Nginx,Inc.獲得。
基本的HTTP服務器功能
- 提供靜態和索引文件,自動索引; 打開文件描述符緩存;
- 加速反向代理與緩存; 負載均衡和容錯;
- 通過緩存FastCGI,uwsgi,SCGI和memcached服務器來加速支持; 負載均衡和容錯;
- 模塊化架構。 過濾器包括gzip,字節範圍,分塊響應,XSLT,SSI和圖像變換過濾器。 如果由代理或FastCGI/uwsgi/SCGI服務器處理,則單頁內的多個SSI包含可以並行處理;
- SSL和TLS SNI支持;
- 支持具有加權和依賴關係優先級的HTTP/2。
其他HTTP服務器功能
- 基於名稱和基於IP的虛擬服務器;
- 保持活動和管道連接的支持;
- 訪問日誌格式,緩衝日誌寫入,快速日誌輪換和syslog日誌記錄;
-
3xx
-5xx
錯誤代碼重定向; - 重寫模塊:使用正則表達式更改URI;
- 根據客戶端地址執行不同的功能;
- 根據客戶端IP地址,密碼(HTTP Basic認證)和子請求結果進行訪問控制;
- HTTP引用的驗證
- PUT,DELETE,MKCOL,COPY和MOVE方法;
- FLV和MP4流媒體;
- 響應速度限制;
- 限制來自一個地址的同時連接或請求的數量;
- 基於IP的地理定位;
- A/B測試;
- 嵌入式Perl
- nginScript。
郵件代理服務器功能
- 使用外部HTTP認證服務器將用戶重定向到IMAP或POP3服務器;
- 使用外部HTTP認證服務器進行用戶認證,並將連接重定向到內部SMTP服務器;
- 認證方式:
- POP3:USER / PASS,APOP,AUTH LOGIN / PLAIN / CRAM-MD5;
- IMAP:LOGIN,AUTH LOGIN / PLAIN / CRAM-MD5;
- SMTP:AUTH LOGIN / PLAIN / CRAM-MD5;
- SSL支持;
- STARTTLS和STLS支持。
TCP/UDP代理服務器功能
- TCP和UDP的通用代理;
- SSL和TLS SNI支持TCP;
- 負載均衡和容錯;
- 基於客戶地址的訪問控制;
- 根據客戶端地址執行不同的功能;
- 限制來自一個地址的同時連接數;
- 訪問日誌格式,緩衝日誌寫入,快速日誌輪換和syslog日誌記錄;
- 基於IP的地理定位;
- A/B測試;
- nginScript。
架構和可擴展性
- 一個主和幾個工作進程; 工作進程在非特權用戶下運行;
- 靈活配置;
- 重新配置和升級可執行文件,而不會中斷客戶端服務;
- 支持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 — 11 / i386; FreeBSD 5 — 11 / amd64;
- Linux 2.2 — 4 / i386; Linux 2.6 — 4 / amd64; Linux 3 — 4 / armv6l, armv7l, aarch64, ppc64le;
- Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
- AIX 7.1 / powerpc;
- HP-UX 11.31 / ia64;
- macOS / ppc, i386;
- Windows XP, Windows Server 2003.
Nginx 是一個高性能的 Web 和反向代理服務器, 它具有有很多非常優越的特性:
作爲 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的併發連接,體現更高的效率,這點使 Nginx 尤其受到虛擬主機提供商的歡迎。能夠支持高達 50,000 個併發連接數的響應,感謝 Nginx 爲我們選擇了 epoll and kqueue 作爲開發模型.
作爲負載均衡服務器:Nginx 既可以在內部直接支持 Rails 和 PHP,也可以支持作爲 HTTP代理服務器 對外進行服務。Nginx 用 C 編寫, 不論是系統資源開銷還是 CPU 使用效率都比 Perlbal 要好的多。
作爲郵件代理服務器: Nginx 同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作爲郵件代理服務器),Last.fm 描述了成功並且美妙的使用經驗。
Nginx 安裝非常的簡單,配置文件 非常簡潔(還能夠支持perl語法),Bugs非常少的服務器: Nginx 啓動特別容易,並且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啓動。你還能夠在 不間斷服務的情況下進行軟件版本的升級。