Tengine---nginx平台初探
nginx的配置系統(tǒng)
1. nginx的配置系統(tǒng)由一個(gè)主配置文件和其他一些輔助的配置文件構(gòu)成。這些配置文件均是純文本文件,全部位于nginx安裝目錄下的conf目錄下
2. 配置文件中以#開始的行,或者是前面有若干空格或者TAB,然后再跟#的行,都被認(rèn)為是注釋
3. 由于除主配置文件nginx.conf以外的文件都是在某些情況下才使用的,而只有主配置文件是在任何情況下都被使用的
4. 在nginx.conf中,包含若干配置項(xiàng)。每個(gè)配置項(xiàng)由配置指令和指令參數(shù)2個(gè)部分構(gòu)成。指令參數(shù)也就是配置指令對應(yīng)的配置值。
5. 當(dāng)前nginx支持的幾個(gè)指令上下文:
main: nginx在運(yùn)行時(shí)與具體業(yè)務(wù)功能(比如http服務(wù)或者email服務(wù)代理)無關(guān)的一些參數(shù),比如工作進(jìn)程數(shù),運(yùn)行的身份等。
http: 與提供http服務(wù)相關(guān)的一些配置參數(shù)。例如:是否使用keepalive啊,是否使用gzip進(jìn)行壓縮等。
server: http服務(wù)上支持若干虛擬主機(jī)。每個(gè)虛擬主機(jī)一個(gè)對應(yīng)的server配置項(xiàng),配置項(xiàng)里面包含該虛擬主機(jī)相關(guān)的配置。在提供mail服務(wù)的代理時(shí),也可以建立若干server.每個(gè)server通過監(jiān)聽的地址來區(qū)分。
location: http服務(wù)中,某些特定的URL對應(yīng)的一系列配置項(xiàng)。
mail: 實(shí)現(xiàn)email相關(guān)的SMTP/IMAP/POP3代理時(shí),共享的一些配置項(xiàng)(因?yàn)榭赡軐?shí)現(xiàn)多個(gè)代理,工作在多個(gè)監(jiān)聽地址上)
nginx的模塊化體系結(jié)構(gòu)
1. nginx的內(nèi)部結(jié)構(gòu)是由核心部分和一系列的功能模塊所組成。這樣劃分是為了使得每個(gè)模塊的功能相對簡單,便于開發(fā),同時(shí)也便于對系統(tǒng)進(jìn)行功能擴(kuò)展
2. nginx提供了web服務(wù)器的基礎(chǔ)功能,同時(shí)提供了web服務(wù)反向代理,email服務(wù)反向代理功能。nginx core實(shí)現(xiàn)了底層的通訊協(xié)議,為其他模塊和nginx進(jìn)程構(gòu)建了基本的運(yùn)行時(shí)環(huán)境,并且構(gòu)建了其他各模塊的協(xié)作基礎(chǔ)。除此之外,或者說大部分與協(xié)議相關(guān)的,或者應(yīng)用相關(guān)的功能都是在這些模塊中所實(shí)現(xiàn)的
3. 模塊的分類?
nginx的模塊根據(jù)其功能基本上可以分為以下幾種類型:
event module: 搭建了獨(dú)立于操作系統(tǒng)的事件處理機(jī)制的框架,及提供了各具體事件的處理。包括ngx_events_module, ngx_event_core_module和ngx_epoll_module等。nginx具體使用何種事件處理模塊,這依賴于具體的操作系統(tǒng)和編譯選項(xiàng)。
phase handler: 此類型的模塊也被直接稱為handler模塊。主要負(fù)責(zé)處理客戶端請求并產(chǎn)生待響應(yīng)內(nèi)容,比如ngx_http_static_module模塊,負(fù)責(zé)客戶端的靜態(tài)頁面請求處理并將對應(yīng)的磁盤文件準(zhǔn)備為響應(yīng)內(nèi)容輸出。
output filter: 也稱為filter模塊,主要是負(fù)責(zé)對輸出的內(nèi)容進(jìn)行處理,可以對輸出進(jìn)行修改。例如,可以實(shí)現(xiàn)對輸出的所有html頁面增加預(yù)定義的footbar一類的工作,或者對輸出的圖片的URL進(jìn)行替換之類的工作。
upstream: upstream模塊實(shí)現(xiàn)反向代理的功能,將真正的請求轉(zhuǎn)發(fā)到后端服務(wù)器上,并從后端服務(wù)器上讀取響應(yīng),發(fā)回客戶端。upstream模塊是一種特殊的handler,只不過響應(yīng)內(nèi)容不是真正由自己產(chǎn)生的,而是從后端服務(wù)器上讀取的。
load-balancer: 負(fù)載均衡模塊,實(shí)現(xiàn)特定的算法,在眾多的后端服務(wù)器中,選擇一個(gè)服務(wù)器出來作為某個(gè)請求的轉(zhuǎn)發(fā)服務(wù)器。
4. nginx使用一個(gè)多進(jìn)程模型來對外提供服務(wù),其中一個(gè)master進(jìn)程,多個(gè)worker進(jìn)程。master進(jìn)程負(fù)責(zé)管理nginx本身和其他worker進(jìn)程。
5. 所有實(shí)際上的業(yè)務(wù)處理邏輯都在worker進(jìn)程。worker進(jìn)程中有一個(gè)函數(shù),執(zhí)行無限循環(huán),不斷處理收到的來自客戶端的請求,并進(jìn)行處理,直到整個(gè)nginx服務(wù)被停止
6.
總結(jié)
以上是生活随笔為你收集整理的Tengine---nginx平台初探的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: boost库 数组智能指针scoped_
- 下一篇: STL:transform