Nginx是目前備受關注的一個高性能HTTP和反向代理服務器,具有簡單、靈活的配置和極高的執行效率。本書面向Linux運維方向的用戶或具備某一類編程語言(C、PHP、Java)基礎的讀者,旨在使其快速掌握Nginx的配置與應用,學會搭建高性能的Web服務器。
全書分為8章,主要內容包括VMware虛擬機的使用、Linux入門、正則表達式、HTTP協議、Nginx安裝與配置、訪問控制、日志管理、虛擬主機、Web服務器搭建、反向代理、負載均衡、緩存以及一些常用模塊和應用(包括調試輸出、網頁壓縮、重寫、重定向、防盜鏈、HTTPS等)。第8章還著重介紹了Nginx的配置優化、LNMP分布式集群和高可用方案的部署,目的是幫助讀者將Nginx應用到復雜的服務器架構中,對所學知識進行鞏固和提高。
本書是一本Nginx的入門書籍,適合作為高等院校本、專科計算機相關專業的教材,也可作為Nginx愛好者的參考書。
序言
傳智播客和“黑馬程序員”江蘇傳智播客教育科技股份有限公司(簡稱傳智播客)是一家專門致力于高素質軟件開發人才的科技公司,“黑馬程序員”是傳智播客旗下高端IT教育品牌。
“黑馬程序員”的學員多為大學畢業后想從事IT行業,但各方面條件還不成熟的年輕人。“黑馬程序員”的學員篩選制度非常嚴格,包括嚴格的技術測試、自學能力測試,還包括性格測試、壓力測試、品德測試等。百里挑一的殘酷篩選制度確保了學員質量,并降低了企業的用人風險。
自“黑馬程序員”成立以來,教學研發團隊一直致力于打造精品課程,不斷在產、學、研三個層面創新自己的執教理念與教學方針,并集中“黑馬程序員”的優勢力量,有針對性地出版計算機教材五十多種,制作教學視頻數十套,發表各類技術文章數百篇。
“黑馬程序員”不僅研發IT系列教材,還為高校師生提供以下配套學習資源與服務。
為大學生提供的配套服務:
專注的輔學平臺“博學谷”(http://yx.boxuegu.com),專業老師在線為您答疑解惑。
針對高校學生在學習過程中存在的壓力等問題,我們還為大學生量身打造了“播妞”。“播妞”不僅致力推行快樂學習,還有定期的助學紅包雨(“播妞”微信/QQ:208695827)。
高校學生也可掃描右方二維碼,加入“播妞”粉絲團,獲取最新學習資源,與“播妞”一起快樂學習。
為IT教師提供的配套服務:
針對高校教學,“黑馬程序員”為IT系列教材精心設計了“教案+授課資源+考試系統+題庫+教學輔助案例”的系列教學資源,高校老師請關注碼大牛老師微信/QQ:2011168841,獲取教材配套資源,也可以掃描右方二維碼,加入專為IT教師打造的師資服務平臺——“教學好助手”,獲取“黑馬程序員”最新教師教學輔助資源及相關動態。
前言
Nginx自從發布以來,在世界范圍內受到越來越多的關注。由于其穩定性好、功能豐富、占用內存少、并發能力強等優勢,在同類型的服務器中表現出色。一些大型網站如百度、京東、新浪、網易、騰訊、淘寶等都已經在內部廣泛使用。因此,對于這款高性能、輕量級的HTTP和反向代理服務器,如何能夠快速、系統地了解并掌握它的應用,成為初學者的迫切需求。
為什么要學習本書
本書針對的是以Linux運維為方向或具備某一類開發語言(如C、PHP、Java等)基礎的讀者。全書圍繞Nginx功能使用以及重點配置案例展開,并鋪墊了Linux服務器、正則表達式、HTTP等方面的基礎知識,適合想要快速掌握Nginx的初學者。
教材遵循學習的難易度及先后順序來安排章節順序,按照“概念講解+案例演示”的方法來設計課程內容,將抽象的概念具體化,學到的知識實踐化,讓讀者不僅理解知識內容,還能根據實際需求進行分析和處理,達到學以致用、學用結合的效果。
如何使用本書
本書的主要內容包括VMware虛擬機、Linux系統、正則表達式、HTTP協議、Nginx安裝與配置、Web服務器搭建、反向代理、負載均衡、緩存,以及Nginx常用模塊的使用、Nginx配置優化、LNMP分布式集群、Nginx+Keepalived高可用方案等。
全書共分為8章:
第1章主要講解常見的Web服務器、Linux系統以及VMware虛擬機的使用,通過本章學習,讀者可以了解一些基本概念,并能夠搭建一個實驗環境。
第2章講解Linux入門、正則表達式和HTTP協議,這些是學習Nginx必備的基礎知識,只有掌握這些內容,才能夠在Nginx使用過程中得心應手。
第3章講解Nginx的安裝和服務器環境的配置,主要包括網絡和防火墻配置、遠程終端的使用、服務腳本的編寫、軟件的安裝等。通過本章的學習,讀者能夠掌握在最小方式安裝的CentOS系統中編譯安裝Nginx,并對服務器進行管理和維護。
第4章講解Nginx服務器的基本配置,認識Nginx配置文件并了解一些基本指令的作用。通過具體案例實現了訪問控制、日志管理和各種類型虛擬主機。
第5章介紹Web服務器的搭建,包括Nginx與PHP、Apache、Tomcat等軟件的組合搭配,以及基于Nginx+Lua的高性能Web開發平臺OpenResty環境的使用。
第6章講解反向代理、負載均衡、緩存配置以及郵件服務,為讀者展示了如何解決大型網站多臺服務器之間協同工作的問題,以便提高計算機系統的處理能力、計算速度,從而滿足業務量的需求。
第7章從模塊的角度介紹Nginx相關應用,包括調試輸出、查看響應狀態、替換響應內容、網頁壓縮傳輸、重寫、重定向、防盜鏈、HTTPS等配置。通過本章的學習,讀者能夠掌握根據具體需求來對Nginx進行不同的模塊編譯和配置。
第8章主要講解Nginx配置優化、LNMP分布式集群以及Nginx+Keepalived高可用方案的部署。本章是對Nginx的綜合應用和提升,從整體服務器架構上滿足大型網站對高并發、高負載和高可用的需求。
在上面所列舉的8章中,第1~3章是基礎課程,主要幫助初學者掌握扎實的基本功;第4、6、7章是Nginx的重點課程,講解Nginx的基本配置、常用模塊和典型應用;第5、8章是動手實戰課程,涉及Apache、Tomcat、OpenResty、PHP、MySQL、Memcached、NFS、Keepalived等多種軟件和服務的搭建與配置,這部分內容比較復雜,希望讀者細心閱讀,靈活運用VMware虛擬機的快照和克隆功能,認真完成每個操作步驟。
在學習過程中,讀者一定要親自實踐教材中演示的案例。如果不能完全理解書中所講知識,讀者可以登錄博學谷平臺,通過平臺中的教學視頻進行深入學習。讀者在學習完一個知識點后,要及時在博學谷平臺上進行測試,以鞏固學習內容。
另外,如果讀者在理解知識點的過程中遇到困難,建議不要糾結于某個地方,可以先往后學習。通常來講,通過逐漸的學習,對于前面不懂和疑惑的知識也能夠理解。在學習Nginx的過程中,一定要多多動手實踐,如果在實踐的過程中遇到問題,建議多思考,理清思路,認真分析問題發生的原因,并在問題解決后及時總結經驗。
致謝
本書的編寫和整理工作由傳智播客教育科技股份有限公司的黑馬程序員完成,主要參與人員有呂春林、韓冬、喬治銘、高美云、陳歡、馬丹、王哲、李東超、韓振國、王金濤等,全體參編人員在這近一年的編寫過程中付出了很多辛勤的勞動,特此表示衷心的感謝。
意見反饋
盡管我們付出了最大的努力,但教材中難免會有不妥之處,歡迎各界專家和讀者朋友們來信、來函給予寶貴意見,我們將不勝感激。您在閱讀本書時,如發現任何問題或有不認同之處可以通過電子郵件與我們取得聯系。請發送電子郵件至:itcast_book@vip.sina.com。前言Nginx高性能Web服務器實戰教程
黑馬程序員
2017年4月
第1章Nginx開篇1
1.1Nginx簡介1
1.1.1Web服務器1
1.1.2Nginx概述2
1.2Linux操作系統3
1.2.1Linux的起源與發展3
1.2.2獲取Linux系統4
1.3VMware虛擬機5
1.3.1什么是虛擬機5
1.3.2VMware安裝CentOS6
1.3.3VMware快照功能11
1.3.4VMware克隆功能12
本章小結13
課后練習14
第2章基礎知識15
2.1Linux入門15
2.1.1基本命令15
2.1.2目錄結構18
2.1.3shell和終端19
2.1.4文件管理23
2.1.5vi編輯器26
2.1.6用戶和權限29
2.2正則表達式36
2.2.1正則表達式概述36
2.2.2正則表達式入門37
2.2.3正則表達式語法規則39
2.2.4正則表達式應用案例42
2.3HTTP協議43
2.3.1HTTP概述43
2.3.2HTTP消息44
2.3.3HTTP請求消息46
2.3.4HTTP響應消息49
本章小結51
課后練習51
目錄Nginx高性能Web服務器實戰教程第3章Nginx的安裝53
3.1Linux服務器搭建53
3.1.1最小化安裝CentOS53
3.1.2網絡配置58
3.1.3遠程終端訪問64
3.1.4安裝必備軟件68
3.2Linux環境下安裝Nginx70
3.2.1獲取Nginx70
3.2.2編譯安裝Nginx71
3.2.3Nginx的啟動與停止74
3.2.4訪問測試76
3.2.5后續操作77
3.3Windows環境下使用Nginx82
本章小結84
課后練習84
第4章Nginx基本配置86
4.1認識配置文件86
4.1.1配置文件結構86
4.1.2設置用戶和組88
4.1.3自定義錯誤頁90
4.2訪問控制93
4.2.1權限控制指令93
4.2.2訪問控制典型應用97
4.3日志文件101
4.3.1訪問日志101
4.3.2錯誤日志104
4.3.3日志文件切割105
4.4虛擬主機107
4.4.1什么是虛擬主機107
4.4.2基于端口號配置虛擬主機107
4.4.3基于IP配置Nginx虛擬主機110
4.4.4基于域名配置虛擬主機113
4.4.5設置目錄列表115
4.4.6子配置文件的引入117
本章小結119
課后練習119
第5章Web服務器搭建120
5.1Nginx+PHP環境120
5.1.1PHP的安裝與使用120
5.1.2PHP與Nginx整合124
5.2Nginx+Apache環境132
5.2.1Apache的安裝與使用132
5.2.2Apache的基本配置137
5.2.3Apache與PHP整合141
5.2.4Nginx+Apache動靜分離143
5.3Nginx+Tomcat環境146
5.3.1Tomcat的安裝與使用146
5.3.2Nginx+Tomcat動靜分離150
5.4OpenResty環境150
5.4.1OpenResty的安裝與使用151
5.4.2OpenResty開發入門153
本章小結156
課后練習156
第6章負載均衡與緩存158
6.1反向代理158
6.1.1代理與反向代理158
6.1.2反向代理服務配置159
6.2負載均衡162
6.2.1什么是負載均衡162
6.2.2負載均衡的配置163
6.3緩存配置168
6.3.1緩存實現原理169
6.3.2永久緩存配置169
6.3.3臨時緩存配置171
6.3.4緩存清理配置174
6.4郵件服務177
6.4.1Nginx實現郵件服務178
6.4.2郵件服務配置178
本章小結181
課后練習181
第7章模塊配置應用182
7.1模塊概述182
7.1.1模塊化結構設計182
7.1.2Nginx模塊分類及作用182
7.1.3Nginx手冊的使用184
7.2調試輸出186
7.2.1調試輸出的配置186
7.2.2常見的應用案例188
7.3查看響應狀態與替換響應內容192
7.3.1安裝所需模塊192
7.3.2查看網站響應狀態193
7.3.3替換網站響應內容193
7.4網頁壓縮傳輸195
7.4.1gzip壓縮技術195
7.4.2網頁壓縮傳輸配置195
7.5重寫與重定向198
7.5.1rewrite模塊的簡介198
7.5.2rewrite實現重寫199
7.5.3rewrite實現重定向201
7.6防盜鏈的配置202
7.6.1圖片防盜鏈202
7.6.2下載防盜鏈205
7.7配置HTTPS網站208
7.7.1什么是HTTPS208
7.7.2頒發認證證書208
7.7.3配置HTTPS網站211
本章小結212
課后練習212
第8章高可用負載均衡集群214
8.1Nginx配置優化214
8.1.1連接數優化214
8.1.2客戶端請求限制217
8.1.3瀏覽器緩存優化219
8.2LNMP分布式集群220
8.2.1什么是集群220
8.2.2LNMP分布式部署221
8.2.3搭建NFS文件服務器229
8.2.4搭建MySQL數據庫服務器234
8.2.5搭建Memcached緩存服務器238
8.2.6ThinkPHP項目部署241
8.3Nginx+Keepalived高可用方案247
8.3.1高可用方案概述247
8.3.2安裝和配置Keepalived服務248
8.3.3使用Keepalived監控Nginx服務251
本章小結253
課后練習253
第5章Web服務器搭建學習目標
掌握Nginx+PHP環境的搭建和配置;
掌握Nginx與Apache、Tomcat實現動靜分離;
掌握OpenResty環境的搭建與使用。Nginx的主要用途是作為Web服務器使用,目前最典型的應用是與PHP、Tomcat、MySQL等軟件組成動態網站平臺。本章將講解Nginx與各種軟件組成的Web服務器環境如何搭配,包括各種軟件的安裝與配置,以及基于Nginx+Lua的高性能Web平臺OpenResty的安裝與使用。
5.1Nginx+PHP環境〖*2〗5.1.1PHP的安裝與使用PHP(HypertextPreprocessor,超文本預處理器)是一種運行于服務器端的嵌入式腳本編程語言,具有開源免費、易學易用、開發效率高等特點,是Web應用開發的主流語言之一。目前由LAMP(Linux、Apache、PHP、MySQL)組成的平臺現已被大量應用在網站系統的搭建中。
在LAMP環境中,Apache作為Web服務器與客戶端瀏覽器交互,PHP負責處理復雜的網站業務邏輯需求,MySQL負責存儲和管理網站的數據庫。而后起之秀的Nginx,在Web服務器功能方面可以取代Apache組成LNMP平臺。關于整體的LNMP平臺會在后面的章節中詳細講解,本節重點介紹Nginx與PHP的整合,從而形成一個基本的動態網站運行環境。