一. nginx功能概述 nginx 提供的基本功能服務歸納為:基本HTTP服務、高級HTTTP服務、郵件代理服務、TCP/UDP 代理服務等四大類。 (1) Nginx提供基本HTTP服務,可以作為HTTP代理伺服器和反向代理伺服器,支持通過緩存加速訪問,可以完成簡單的負載均衡和容錯,支持包過濾功 ...
一. nginx功能概述
nginx 提供的基本功能服務歸納為:基本HTTP服務、高級HTTTP服務、郵件代理服務、TCP/UDP 代理服務等四大類。
(1) Nginx提供基本HTTP服務,可以作為HTTP代理伺服器和反向代理伺服器,支持通過緩存加速訪問,可以完成簡單的負載均衡和容錯,支持包過濾功能,支持SSL等。
(2) Nginx提供高級HTTP服務,可以進行自定義配置,支持虛擬主機,支持URL重定向,支持網路監控,支持流媒體傳輸等。
(3) Nginx 作為郵件代理伺服器是最早開發這個產品的目的之一,它支持IMAP/POP3代理服務功能,支持內容SMTP代理服務功能。
1.1 基本HTTP服務
(1) 處理靜態文件(如HTML靜態網頁及請求),處理索引文件以及支持自動索引。
(2) 打開並自行管理文件描述符緩存。
(3) 提供反向代理服務,並且可以使用緩存加速反向代理,同時完成簡單負載均衡和容錯。
(4) 提供遠程FastCGI服務的緩存機制,加速訪問,同時完成簡單的負載均衡和容錯。
(5) 使用Nginx的模塊化特性提供過濾器功能,Nginx基本過濾器包括Gzip壓縮、rgnges支持、chunked響應、XSLT、SSL以有圖像縮放等。
(6) 支持HTTP下的安全套接層安全協議SSL。
1.2 高級http服務
(1) 支持基於名字和IP的虛擬主機設置。
(2) 支持http的Keep-alive模式和管線Pipelined模型連接。
(3) 支持重新載入配置以及線上升級時,無須中斷中在處理的請求。
(4) 自定義訪問日誌格式、帶緩存的日誌寫操作以及快速日誌輪轉和syslog日誌記錄。
(5) 提供http狀態3xx~5xx錯誤代碼重定向功能。
(6) 支持重寫(Rewrite)模式擴展,使用正則表達式更改URL。
(7) 支持HTTP dav模塊,為http webdav 提供put、DELETE、MKCOL、COPY、MOVE方法。
(8) 支持FLV流和MP4流傳輸。
(9) 支持網路監控,包括基於客戶端IP地址和HTTP基本認證的訪問控制、速度限制、來自同一地址的同時連接數或請求數限制等。
(10) 支持嵌入Perl語言。
(11) njs腳本語言。
1.3 郵件代理服務
(1) 支持使用外部HTTP認證伺服器重定向 用戶到IAMP/POP3後端,並支持IMAP認證方式和POP3認證方式。
(2) 支持使用外部HTTP認證伺服器認證用戶後 重定向連接到內部SMTP後端,並支持SMTP認證方式。
(3) 支持郵件代理服務下的安全套接層安全協議SSL。
(4) 支持純文本通信協議的擴展協議starttls。
1.4 TCP/UDP代理伺服器功能
(1) TCP/UDP的通用代理。
(2) SSL和TLS SNI 支持TCP。
(3) 負載均衡和容錯。
(4) 基於客戶端地址的訪問控制。
(5) 根據客戶端地址執行不同的功能。
(6) 限制來自同一個ip地址的同時連接數。
(7) 自定義訪問日誌格式、帶緩存的日誌寫操作以及快速日誌輪轉和syslog日誌記錄。
(8) 基於IP的地理定位。
(9) njs腳本語言。
二.常用功能介紹
2.1 HTTP代理和反向代理
代理服務和反向代理是Nginx伺服器作為Web伺服器的主要功能之一,尤其是反向代理應用廣泛。Nginx伺服器轉發來自前端的請求,性能穩定而且後端轉發與業務配置相互分離,配置靈活。在後端轉換請求完全不用關心網路環境如何,可以指定任意的ip和port或其他類型鏈接請求等。
通過正則表達式進行相關配置,可以實現根據不同的表達式,採取不同的轉發策略,並且對後端異常判斷則重新轉向另一後端ip。
2.2 負載均衡
一般來說負載均衡是將大量前端併發訪問或數據流量分擔到多個後端網路節點上分別處理,這樣可有效減少前端用戶等待響應的時間。對於Nginx負載策略可分為兩大類:內置策略和擴展策略。(1)內置策略:輪詢、加權輪詢、ip hash 三種;(2) 擴展策略主要通過第三方模塊實現,種類豐富,常見有url hash、fair等。預設內置策略會被編譯進Nginx內核,使用時只需要在Nginx伺服器配置中設置相關參數即可。而擴展策略需要手動將第三方模塊編碼到Nginx內核。
2.3 Web緩存
Nginx伺服器的Web緩存服務主要由proxy_cache和fastcgi_cache的相關指令集構成。其中proxy_cache主要用於在Nginx伺服器提供反向代理服務時,對後端源伺服器的返回內容進行URL緩存; fastcgi_cache主要用於對fastcgi的動態程式進行緩存。另外還有第三方模塊的Web緩存功能。
Squid也是一款相當流行的開源代理伺服器和Web緩存伺服器。Ngnix伺服器對多核CPU的調度比Squid更好,性能高於Squid。
參考文獻:
正向代理和反向代理:https://www.cnblogs.com/xdp-gacl/p/3706853.html
官方介紹:http://nginx.org/en/
Nginx高性能Web伺服器詳解