- 實(shí)戰(zhàn)Nginx:取代Apache的高性能Web服務(wù)器
- 張宴
- 2482字
- 2018-12-27 17:42:08
序言
我的網(wǎng)站系統(tǒng)架構(gòu)之路
我最早接觸計(jì)算機(jī)是在1995年,上小學(xué)四年級的時(shí)候。當(dāng)時(shí)父親單位買了一臺(tái)386計(jì)算機(jī)(DOS操作系統(tǒng)+UCDOS漢字環(huán)境+WPS文字處理軟件),用于打字和打印文件。我每天課余時(shí)間都會(huì)抽空去玩這臺(tái)計(jì)算機(jī),利用DOS中自帶的QBASIC語言編寫非常簡單的小程序,從那時(shí)起我就對計(jì)算機(jī)產(chǎn)生了濃厚的興趣。之后的幾年內(nèi),先后接觸了Windows 95/98/2000操作系統(tǒng),并在Windows 98上搭建了PWS個(gè)人網(wǎng)站服務(wù)器,在Windows 2000上搭建了IIS網(wǎng)站服務(wù)器。2000年,初三畢業(yè)的那個(gè)暑假,我第一次接觸互聯(lián)網(wǎng),做了自己的第一個(gè)純靜態(tài)HTML個(gè)人主頁。高一時(shí),我利用網(wǎng)上提供的免費(fèi)主頁空間,做了一個(gè)本地的門戶網(wǎng)站。2003年高考結(jié)束后的那個(gè)假期,我花65元購買了國際域名s135.com、150元購買虛擬主機(jī),創(chuàng)辦了一個(gè)采用ASP語言開發(fā)的國際經(jīng)濟(jì)貿(mào)易資訊類網(wǎng)站——商資網(wǎng)(現(xiàn)在已關(guān)閉)。
2003年,我進(jìn)入中南民族大學(xué)學(xué)習(xí)。由于高中我學(xué)的是文科,填志愿時(shí)不能選擇計(jì)算機(jī)類專業(yè),于是我選擇了經(jīng)濟(jì)學(xué)院的國際經(jīng)濟(jì)與貿(mào)易專業(yè)。盡管如此,我對計(jì)算機(jī)和網(wǎng)絡(luò)的興趣依舊不減,開始學(xué)習(xí)Linux系統(tǒng)和PHP語言。由于具有一些網(wǎng)站制作知識(shí),我進(jìn)入了經(jīng)濟(jì)學(xué)院學(xué)生會(huì)的信息部,開發(fā)維護(hù)所在院系的網(wǎng)站。之后,又進(jìn)入了學(xué)校黨委宣傳部下屬的網(wǎng)絡(luò)媒體“民大在線”,從事網(wǎng)站PHP開發(fā)與系統(tǒng)運(yùn)維工作。后來,基于Linux+Apache +MySQL+PHP平臺(tái)為學(xué)校招生就業(yè)工作處開發(fā)了“就業(yè)信息網(wǎng)”,并接觸到了IBM高端服務(wù)器。接下來的日子,我為學(xué)校的多個(gè)部門開發(fā)、維護(hù)網(wǎng)站,為了便于演示網(wǎng)站,我編寫了一鍵搭建Apache+PHP+MySQL服務(wù)器平臺(tái)的軟件“APMServ”。最后,我為學(xué)校網(wǎng)絡(luò)中心兼職維護(hù)學(xué)校的主Web服務(wù)器,開發(fā)虛擬主機(jī)管理平臺(tái),接觸到了HP刀片服務(wù)器和磁盤陣列。學(xué)校的兼職工作為我日后工作打下了比較扎實(shí)的基礎(chǔ)。
2007年1月,大四下學(xué)期為實(shí)習(xí)階段,我進(jìn)入新浪網(wǎng)互動(dòng)社區(qū)事業(yè)部播客產(chǎn)品部工作。新浪播客于2006年12月20日剛上線,我加入播客團(tuán)隊(duì)的時(shí)候,它正處于高速發(fā)展時(shí)期,網(wǎng)站PV快速增長,Apache+PHP動(dòng)態(tài)應(yīng)用服務(wù)器的負(fù)載日益增大。而在Web服務(wù)器的負(fù)載均衡方面,由于一對F5 BIG-IP硬件負(fù)載均衡交換機(jī)要服務(wù)新浪網(wǎng)的多個(gè)產(chǎn)品,七層交換須要耗費(fèi)F5 BIG-IP不少的CPU資源,而F5 BIG-IP四層交換有專門的硬件芯片來處理,耗費(fèi)的資源較少,所以,在新浪,F(xiàn)5 BIG-IP一般只用四層負(fù)載均衡。但是,URL過濾、轉(zhuǎn)發(fā)、重定向及添加x-forwarded-for頭等功能,只有七層負(fù)載均衡才能實(shí)現(xiàn)。在這種背景下,我測試了來自俄羅斯的開源Nginx服務(wù)器,其并發(fā)支持能力高于Apache數(shù)倍,處理速度高效快捷、穩(wěn)定性也極高,于是,在領(lǐng)導(dǎo)的支持下,逐步采用了Nginx+PHP(FastCGI)取代了Apache+PHP服務(wù)器,采用Nginx負(fù)載均衡代替F5 BIG-IP進(jìn)行軟七層負(fù)載均衡,為公司節(jié)約了大量的服務(wù)器及系統(tǒng)運(yùn)維開銷。我2007年9月開始撰寫的《Nginx+PHP(FastCGI)搭建勝過Apache十倍的Web服務(wù)器》系列文章,作為國內(nèi)最早詳細(xì)介紹Nginx + PHP安裝、配置、使用的資料之一,為推動(dòng)Nginx在國內(nèi)的發(fā)展起到了積極作用。2008年4月~10月在趕集網(wǎng)工作期間,完成趕集網(wǎng)主站所有Web服務(wù)器從Apache+PHP到Nginx+PHP的遷移,單臺(tái)服務(wù)器的CPU平均占用率由70%~80%降低到30%~40%,系統(tǒng)負(fù)載由11~16降低到2~5。2008年11月至今,我在金山軟件網(wǎng)游公司逍遙網(wǎng)擔(dān)任架構(gòu)師期間,將Web負(fù)載均衡服務(wù)器、Web緩存服務(wù)器、PHP動(dòng)態(tài)應(yīng)用服務(wù)器集群、Flash FLV視頻播放服務(wù)器等,全面采用Nginx。2009年9月3日14:30,金山軟件剛公測不久的大型3D武俠網(wǎng)游《劍俠情緣網(wǎng)絡(luò)版叁》臨時(shí)維護(hù),暫停服務(wù)1小時(shí),大量玩家上游戲官網(wǎng),論壇、評論、客服等動(dòng)態(tài)應(yīng)用Nginx服務(wù)器集群,訪問人數(shù)比平時(shí)峰值激增數(shù)倍,每臺(tái)服務(wù)器的Nginx活動(dòng)連接數(shù)達(dá)到2.8萬,仍然能夠正常提供服務(wù),這也是我至今遇到的Nginx生產(chǎn)環(huán)境最高并發(fā)值。目前,Nginx已經(jīng)在新浪、搜狐、網(wǎng)易、騰訊等門戶網(wǎng)站,以及豆瓣、六間房、酷6網(wǎng)、開心網(wǎng)、人人網(wǎng)、YUPOO相冊、迅雷看看、金山逍遙網(wǎng)、金山愛詞霸等Web 2.0網(wǎng)站得到廣泛應(yīng)用,越來越受到大家的喜愛。
撰寫本書的背景
近期,新浪、搜狐、網(wǎng)易、騰訊、金山、TOM、中華網(wǎng)、賽爾網(wǎng)絡(luò)、上海九城等知名互聯(lián)網(wǎng)公司的系統(tǒng)工程師、網(wǎng)絡(luò)工程師招聘信息中,都加上了一條對Nginx配置管理經(jīng)驗(yàn)的要求。Nginx作為新興的Web服務(wù)器,目前的發(fā)展勢頭迅猛,已經(jīng)在眾多知名網(wǎng)站的各項(xiàng)產(chǎn)品中取代Apache。但是,Nginx相關(guān)的中文資料卻比較欠缺,目前還沒有關(guān)于Nginx服務(wù)器的任何書籍,這也使得一些朋友對于是否采用Nginx取代Apache猶豫不決。本書就是為對Nginx服務(wù)器實(shí)踐應(yīng)用感興趣的讀者準(zhǔn)備的,適用于以前沒有接觸過Nginx,或者對Nginx有一些了解并希望能夠進(jìn)一步深入,以及對Nginx有較多研究,希望共同探討的專業(yè)系統(tǒng)工程師、個(gè)人網(wǎng)站站長及一切Linux/Unix從業(yè)人員。
本書的主要內(nèi)容
Nginx(“engine x”)是俄羅斯人Igor Sysoev編寫的一款高性能的HTTP和反向代理服務(wù)器。Nginx選擇了epoll和kqueue作為網(wǎng)絡(luò)I/O模型,在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品,它能夠支持高達(dá)50000個(gè)并發(fā)連接數(shù)的響應(yīng),運(yùn)行穩(wěn)定,且內(nèi)存、CPU等系統(tǒng)資源消耗非常低。
本書主要分為4個(gè)部分,第1部分為基礎(chǔ)篇,介紹了Nginx服務(wù)器的安裝與配置方法;第2部分為進(jìn)階篇,重點(diǎn)介紹了Nginx的配置優(yōu)化方法、Nginx與PHP/JSP/ASP.NET/Perl的結(jié)合配置方法、Nginx HTTP反向代理與負(fù)載均衡的配置與優(yōu)化、Nginx的Rewrite規(guī)則、Nginx的Web緩存服務(wù)、Nginx模塊開發(fā)等,最后還分析了新浪的開源軟件項(xiàng)目──基于Nginx的NCACHE網(wǎng)頁緩存系統(tǒng);第3部分為實(shí)戰(zhàn)篇,分析了Nginx在國內(nèi)知名網(wǎng)站(如新浪播客、金山逍遙網(wǎng)等)中的應(yīng)用案例,以及Nginx在Flash FLV視頻點(diǎn)播、小內(nèi)存VPS服務(wù)器上的優(yōu)化等內(nèi)容;第4部分為模塊篇,對Nginx的各項(xiàng)模塊進(jìn)行了集中介紹,可以作為參考手冊來翻閱。
致謝
在本書的編寫過程中,得到了家人、同事和朋友的大力支持,在此我表示由衷的感謝。感謝老婆對我的支持與鼓勵(lì),感謝余建煊、李靜、張鵬翼等朋友為本書作序,以及給予的幫助。感謝前新浪播客劉博、鄭宇、姜源、李雅敏、宋健等朋友,以及現(xiàn)在金山逍遙網(wǎng)技術(shù)支持部所有同事在研究Nginx及日常工作中給我的支持與幫助。此外,還要感謝吳捷(第九城市)及不知名的網(wǎng)友給予的意見和建議。
最后,要感謝在本書的編寫過程中,博文視點(diǎn)的徐定翔、白愛萍、陳元玉等編輯給予的幫助與支持。
示例代碼下載
如果您需要書中的示例代碼,請移步至:
http://blog.s135.com/book/nginx/code/
作者聯(lián)系方式
由于自身能力有限,書中難免存在錯(cuò)誤與疏漏,如果讀者發(fā)現(xiàn)哪兒存在錯(cuò)誤,或者有什么想法和意見想交流,可以通過E-mail或博客留言,與我聯(lián)系。
個(gè)人博客:http://blog.s135.com
E-mail:net@s135.com
張宴
北京金山軟件 金山游戲(KSG)-逍遙網(wǎng) 系統(tǒng)架構(gòu)師
2010年1月
- 中臺(tái)架構(gòu)與實(shí)現(xiàn):基于DDD和微服務(wù)
- 企業(yè)IT架構(gòu)轉(zhuǎn)型之道:阿里巴巴中臺(tái)戰(zhàn)略思想與架構(gòu)實(shí)戰(zhàn)
- 數(shù)據(jù)科學(xué)家訪談錄
- 微服務(wù)治理:體系、架構(gòu)及實(shí)踐
- 微信公眾平臺(tái)搭建與開發(fā)揭秘(第2版)
- SRv6網(wǎng)絡(luò)編程:開啟IP網(wǎng)絡(luò)新時(shí)代
- IT項(xiàng)目管理理論與方法
- 數(shù)據(jù)中臺(tái):讓數(shù)據(jù)用起來(第2版)
- IT能力與企業(yè)信息化
- IT服務(wù)管理及CMMI-SVC實(shí)施
- IT與項(xiàng)目管理軟件應(yīng)用
- 日志管理與分析(第2版)
- IT傳:信息技術(shù)250年
- 云計(jì)算解碼
- 軟件架構(gòu)師的12項(xiàng)修煉