[TOC]
Nginx初探
常見服務(wù)器介紹
- Apache服務(wù)器
開源項目
優(yōu)點:在各種開源的WWW服務(wù)提供工具中特性最全魄幕,運行速度最快色乾,性能相對穩(wěn)定提岔,擴展功能豐富
缺點:使用進程為基礎(chǔ)的結(jié)構(gòu)宰僧。在對一個Apache Web站點擴容時,通常是增加服務(wù)器或擴充群集節(jié)點而不是增加處理器 - Microsoft IIS
微軟公司的Web服務(wù)器產(chǎn)品您市,同Windows Server一起發(fā)行觉痛。包含Gopher Server、FTP Server茵休,并且可用于HTTP Server薪棒、FTP Server、NNTP Server榕莺、SMTP Server
優(yōu)點:和Windows Server相結(jié)合俐芯,使網(wǎng)絡(luò)應(yīng)用服務(wù)器的管理、可用性帽撑、可靠性泼各、安全性、性能和可擴展性大大增強
缺點:付費軟件亏拉,部署成本高 - Tomcat服務(wù)器
開源項目扣蜻,通常作為Apache的擴展部分,為運行JSP頁面和Servlet提供服務(wù)及塘,獨立的Servlet容器是Tomcat的默認模式莽使。它處理靜態(tài)HTML的能力不如Apache服務(wù)器。在中小系統(tǒng)和并發(fā)訪問用戶不是很多的場合下使用笙僚,是開發(fā)和調(diào)試JSP程序的首選芳肌。
優(yōu)點:開源,體積小肋层,安裝部署方便亿笤,系統(tǒng)資源占用率低,是主要的Servlet和JSP容器
缺點:輕量級服務(wù)器栋猖,無法滿足復(fù)雜業(yè)務(wù)場景净薛,也沒有負責和豐富的功能 - Lighttpd服務(wù)器
來自德國的開源輕量級服務(wù)器
優(yōu)點:專門針對高性能網(wǎng)站,提供了一套安全蒲拉、快速肃拜、兼容性良好并且靈活的Web Server環(huán)境痴腌。同時,它具有非常低的內(nèi)存開銷燃领、CPU占用率及模塊豐富等特點士聪,支持FastCGI、Output Compress猛蔽、URL重寫等絕大多數(shù)Apache具有的重要功能剥悟,是Apache的絕好替代者
缺點:Proxy功能支持不完善、對編碼支持不完善等
Nginx的功能特性
Nginx服務(wù)器以其功能豐富著稱于世枢舶。既可以作為HTTP服務(wù)器懦胞,也可以作為反向代理服務(wù)器或者郵件服務(wù)器替久;能夠快速響應(yīng)靜態(tài)頁面的請求凉泄;支持FastCGO、SSL蚯根、Virtual Host后众、URL Rewrite、HTTP Basic Auth颅拦、Gzip等大量使用功能蒂誉;并且支持第三方功能模塊的擴展
Nginx提供的服務(wù):
- 基本服務(wù):可以作為HTTP代理服務(wù)器和反向代理服務(wù)器,支持通過緩存加速訪問距帅,可以完成簡單的負載均衡和容錯右锨,支持包過濾功能,支持SSL等
- 高級服務(wù):可以進行自定義配置碌秸,支持虛擬主機绍移,支持URL重定向,支持網(wǎng)絡(luò)監(jiān)控讥电,支持流媒體傳輸?shù)?/li>
- 郵件代理服務(wù):支持IMAP/POP3代理服務(wù)功能蹂窖,支持內(nèi)部SMTP代理服務(wù)功能
特點:高穩(wěn)定、高性能恩敌、資源占用少瞬测、功能豐富、模塊化結(jié)構(gòu)纠炮、支持熱部署
常用功能介紹
- 正向代理:
正向代理 是一個位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器月趟,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個請求并指定目標(原始服務(wù)器)恢口,然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端孝宗。客戶端必須要進行一些特別的設(shè)置才能使用正向代理弧蝇。
正向代理的用途:- 訪問原來無法訪問的資源碳褒,如google
- 可以做緩存折砸,加速訪問資源
- 對客戶端訪問授權(quán),上網(wǎng)進行認證
- 代理可以記錄用戶訪問記錄(上網(wǎng)行為管理)沙峻,對外隱藏用戶信息
- 反向代理
反向代理(Reverse Proxy)實際運行方式是指以代理服務(wù)器來接受internet上的連接請求睦授,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請求連接的客戶端摔寨,此時代理服務(wù)器對外就表現(xiàn)為一個服務(wù)器去枷。
方向代理的用途:-
保證內(nèi)網(wǎng)的安全,可以使用反向代理提供WAF功能是复,阻止web攻擊
image -
保證內(nèi)網(wǎng)的安全删顶,可以使用反向代理提供WAF功能,阻止web攻擊
image
-
HTTP代理和反向代理
Nginx服務(wù)器轉(zhuǎn)為前端請求性能穩(wěn)定淑廊,并且后端轉(zhuǎn)發(fā)與業(yè)務(wù)配置相互分離逗余,配置相當靈活。它支持判斷表達式季惩,通過正則表達式進行相關(guān)配置录粱,可以實現(xiàn)根據(jù)不同的表達時尚,采取不同的轉(zhuǎn)發(fā)策略画拾。其次啥繁,它對后端返回情況進行了異常判斷,如果返回結(jié)果不正常青抛,則請求另一臺主機旗闽,并且剔除返回異常的主機。還支持錯誤頁面跳轉(zhuǎn)功能
負載均衡
負載均衡蜜另,包括兩個方面的含義:
- 將單一的重負載分擔到多個網(wǎng)絡(luò)節(jié)點上做并行處理适室,每個節(jié)點處理結(jié)束后將結(jié)果匯總返回給用戶,這樣可以大幅度提高網(wǎng)絡(luò)系統(tǒng)的處理能力
- 將大量的前端并發(fā)訪問或數(shù)據(jù)流量分擔到多個后端網(wǎng)絡(luò)節(jié)點上分別處理蚕钦,這樣可以有效減少前端用戶等待響應(yīng)的時間亭病。Web服務(wù)器、FTP服務(wù)器嘶居、企業(yè)關(guān)鍵應(yīng)用服務(wù)器等網(wǎng)絡(luò)應(yīng)用方面談到的負載均衡問題罪帖,基本屬于此含義。
Nginx服務(wù)器的負載均衡主要是對大量前端訪問和流量進行分流邮屁,以保證前端用戶的訪問效率
Nginx服務(wù)器的負載均衡策略分為兩大類:
內(nèi)置策略(被編入Nginx內(nèi)核整袁,只需在Nginx服務(wù)器配置中設(shè)置參數(shù)即可):
- 輪詢策略:將每個前端請求按順序(時間順序或者排列順序)逐一分配到不同的后端節(jié)點上,對于出現(xiàn)問題的后端節(jié)點自動排除
- 加權(quán)輪訓(xùn):在基本的輪訓(xùn)策略上考慮后端節(jié)點接受請求的權(quán)重佑吝,指定各個后端節(jié)點被輪詢到的幾率坐昙。主要用于后端節(jié)點性能不均的情況
- IP hash:將前端的訪問IP進行hash操作,然后根據(jù)hash結(jié)果將請求分配給不同的后端節(jié)點芋忿≌停可看作一種特殊的輪詢策略疾棵。通過Nginx的實現(xiàn),每個前端訪問IP會固定訪問一個后端節(jié)點痹仙。這樣做的好處是避免前端用戶的session在后端多個節(jié)點上的共享的問題
擴展策略(不會編入Nginx內(nèi)核是尔,需要手動將第三方內(nèi)核編譯到Nginx內(nèi)核中)
- url hash:形式上和IP hash相近,不同點在于IP hash對前端訪問IP進行了hash操作开仰,而url hash策略是對前端請求的url進行了hash操作拟枚。url hash策略的優(yōu)點在于,如果后端有緩存服務(wù)器众弓,它能夠提高緩存效率恩溅,同時也解決了session的問題。缺點是如果后端節(jié)點出現(xiàn)異常谓娃,它不能自動排除該節(jié)點脚乡。后端節(jié)點出現(xiàn)異常會導(dǎo)致Nginx服務(wù)器返回503錯誤
- fair:Nginx通過后端節(jié)點對請求的響應(yīng)時間判斷負載情況,該模塊將前端請求轉(zhuǎn)發(fā)到一個最近負擔最小的后臺節(jié)點傻粘。
Web緩存
Nginx服務(wù)器的Web緩存服務(wù)主要由Proxy Cache相關(guān)指令集和FastCGI_Cache相關(guān)指令集構(gòu)成每窖。Proxy Cache主要用于在Nginx服務(wù)器提供反向代理服務(wù)時帮掉,對后端服務(wù)器的返回內(nèi)容進行URL緩存弦悉;FastCGI_Cache主要用于對FastCGI的動態(tài)程序進行緩存。
第三方ngx_cache_purge也經(jīng)常用到蟆炊,主要用于清除Nginx服務(wù)器上指定URL緩存