Nginx
Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè) IMAP/POP3/SMTP代理服務(wù)器饰躲,以穩(wěn)定性、豐富的功能集臼隔、示例配置文件和低系統(tǒng)資源的消耗而聞名嘹裂。
Nginx基礎(chǔ)認(rèn)識(shí)
1、不支持windows躬翁,支持Linux焦蘑、BSD、Unix等操作系統(tǒng)
2盒发、是一個(gè) HTTP 和反向代理服務(wù)器
3、支持負(fù)載均衡狡逢、反向代理宁舰、正向代理等功能
4、支持基本 HTTP 服務(wù)器的功能奢浑,如日志蛮艰、壓縮、Byte ranges雀彼、Chunked responses壤蚜、SSL、虛擬主機(jī)
Nginx的工作模式
采用一個(gè)master進(jìn)程和多個(gè)worker工作進(jìn)程
master進(jìn)程
負(fù)責(zé)管理worker進(jìn)程徊哑,同時(shí)監(jiān)聽連接請(qǐng)求袜刷,當(dāng)連接請(qǐng)求到來之后將連接放入worker進(jìn)程中去處理具體的業(yè)務(wù)請(qǐng)求,完成下面的工作:
1)讀取并驗(yàn)證配置信息;
2)創(chuàng)建莺丑、綁定及關(guān)閉套接字著蟹;
3)啟動(dòng)、終止 worker 進(jìn)程及維護(hù) worker 進(jìn)程的個(gè)數(shù)梢莽;
4)無須中止服務(wù)而重新配置工作萧豆;
5)控制非中斷式程序升級(jí),啟用新的二進(jìn)制程序并在需要時(shí)回滾至老版本昏名;
6)重新打開日志文件涮雷;
7)編譯嵌入式perl腳本
worker 進(jìn)程
處理具體事務(wù)的進(jìn)程,每個(gè)進(jìn)程只有一個(gè)主線程轻局,這樣就不會(huì)引起很多的線程切換洪鸭,從而降低了系統(tǒng)開銷样刷,同時(shí)每個(gè)線程內(nèi)部使用異步非阻塞的方式來管理描述符這樣就可以管理大量的描述符,當(dāng)描述符多的時(shí)候也只是會(huì)占用較多的內(nèi)存而已卿嘲,而不會(huì)造成占用大量cpu時(shí)間颂斜。
1)接收、傳入并處理來自客戶端的連接拾枣;
2)提供反向代理及過濾功能沃疮;
3)nginx任何能完成的其它任務(wù)
Nginx能夠處理高并發(fā)的原因在于對(duì)socket的管理方式是異步非阻塞的,使用select/poll/epoll/kqueue 來實(shí)現(xiàn)對(duì)大量socket描述符的管理梅肤,每個(gè)worker進(jìn)程有一個(gè)主線程司蔬,而沒有其他的線程這樣的好處就在于不需要進(jìn)行線程間的切換,這樣就節(jié)省了資源
異步非阻塞
異步的概念是和同步相對(duì)的姨蝴,也就是不同事件之間不是同時(shí)發(fā)生的俊啼。非阻塞的概念是和阻塞對(duì)應(yīng)的,阻塞是事件按順序執(zhí)行左医,每一事件都要等待上一事件的完成授帕,而非阻塞是如果事件沒有準(zhǔn)備好,這個(gè)事件可以直接返回浮梢,過一段時(shí)間再進(jìn)行處理詢問跛十,這期間可以做其他事情。
Nginx信號(hào)
Nginx 支持下表中的信號(hào):
1)TERM,INT:快速關(guān)閉程序秕硝,終止當(dāng)前正在處理的請(qǐng)求
2)QUIT:處理完當(dāng)前請(qǐng)求后芥映,關(guān)閉程序
3)HUP:重新加載配置文件,開啟新的工作進(jìn)程远豺,關(guān)閉舊的工作進(jìn)程奈偏,不會(huì)中斷請(qǐng)求
4)USR1:重新打開一個(gè)log文件,用去切換日志
5)USR2:平滑升級(jí)可執(zhí)行程序
6)WINCH:從容關(guān)閉工作進(jìn)程
kill – XXX <pid> 來控制 Nginx躯护,其中 XXX 就是上表中列出的信號(hào)名惊来。