Nginx從入門到精通之nginx詳細介紹

前言

nginx是一個HTTP的反向代理服務器、一個郵件理服務器、一個通用的TCP/UDP代理服務器。它是一個在商業上使用非常廣泛的網絡層中間組件。與Tomcat相比,它具備體積更小,效率更高,佔用更少資源,可處理更多的Case優勢,深受各大公司喜愛。

Http核心特性

1.提供靜態和索引文件,自動索引;打開文件描述符緩存;

location / {
        index index.$geo.html index.html;
}

location / {
    autoindex on;
}

#cache
Example:
open_file_cache          max=1000 inactive=20s;
open_file_cache_valid    30s;
open_file_cache_min_uses 2;
open_file_cache_errors   on;

Syntax: open_file_cache_errors on | off;
Default:    open_file_cache_errors off;
Context:    http, server, location

2.使用緩存加速反向代理;負載均衡和容錯性;

location / {
    proxy_pass       http://127.0.0.1:8000;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
}

#更多代理配置屬性說明在http://nginx.org/en/docs/http/ngx_http_proxy_module.html#example

#ngx_http_upstream_module是用於定義服務器組的

3.加速支持FastCGI、uwsgi、SCGI和memcached服務器的緩存;負載均衡和容錯性;
4.模塊化的體系結構。過濾器包括gzipping、字節範圍、分塊響應、XSLT、SSI和圖像轉換過濾器。如果由代理或FastCGI/uwsgi/SCGI服務器處理多個SSI包含,則可以並行處理單個頁面中的多個SSI;
5.支持SSL和TLS SNI;

Http其他特性

1.構建基於名稱、IP的虛擬服務器;
2.支持Keep-alive和pipeline連接;
3.訪問日誌格式、緩衝日誌寫入、快速日誌旋轉和syslog日誌記錄;
4.3xx-5xx錯誤code重定向;
5.重寫模塊:使用正則表達式改變URI;
6.根據客戶端地址執行不同的功能;
7.基於客戶端IP地址、密碼(HTTP基本認證)和子請求結果的訪問控制;
8.HTTP引用器的驗證;
9.PUT、DELETE、MKCOL、COPY和MOVE方法;
10.FLV、MP4流;
11.響應率限制;
12.限制單個IP連接請求數量;
13.基於IP的地理位置;
14.A/B測試
15.請求鏡像

郵件代理服務器特性

1.用戶使用外部的Http驗證服務器重定向到IMAP、POP3服務器
2.使用外部Http驗證服務器進行用戶驗證,連接重定向到內部的SMTP服務器;
3.驗證方式:
a.POP3:USER/PASS.APOP,AUTH LOGIN/PLAIN/CRAM-MD5;
b.IMAP:LOGIN,AUTH LOGIN/PLAIN/CRAM-MD5;
c.SMTP:AUTH LOGIN/PLAIN/CRAM-MD5;
4.SSL支持
5.支持STARTTLS\STLS

TCP、UDP代理服務器特性

1.通用TCP、UDP代理;
2.支持TCP的SSL\TLS SNI;
3.負載均衡和容錯性
4.基於客戶端地址的訪問控制
5.根據客戶端地址執行不同功能
6.限制單IP連接數
7.訪問日誌格式、緩衝日誌寫入、快速日誌旋轉和syslog日誌記錄;
8.基於IP的地理位置
9.AB測試

體系架構與可擴展性

1.一個master和多個worker進程,worker進程在無特權用戶下運行;
2.靈活的配置
3.重新配置、升級對於客戶端無感
4.支持kqueue (FreeBSD 4.1+)、epoll (Linux 2.6+)、/dev/poll (Solaris 7 11/99+)、事件端口(Solaris 10)、select和poll;
5.支持各種kqueue功能,包括EV_CLEAR、EV_DISABLE(臨時禁用事件)、NOTE_LOWAT、EV_EOF、可用數據個數、錯誤代碼;
6.支持EPOLLRDHUP (Linux 2.6.17+, glibc 2.8+)、EPOLLEXCLUSIVE (Linux 4.5+, glibc 2.24+)等epoll特性;
7.sendfile (FreeBSD 3.1+、Linux 2.2+、macOS 10.5+)、sendfile64 (Linux 2.4.21+)和sendfilev (Solaris 8 /01+)支持;
8.File AIO (FreeBSD 4.3+, Linux 2.6.22+);
9.DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS);
10.10000個不活躍的HTTP keep-alive連接佔用大約2.5M內存;
11.將數據複製操作保持在最低限度。

測試操作系統和平臺

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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章