Nginx高性能Web服務器應用與實戰(zhàn)全書電子講義完整版課件_第1頁
Nginx高性能Web服務器應用與實戰(zhàn)全書電子講義完整版課件_第2頁
Nginx高性能Web服務器應用與實戰(zhàn)全書電子講義完整版課件_第3頁
Nginx高性能Web服務器應用與實戰(zhàn)全書電子講義完整版課件_第4頁
Nginx高性能Web服務器應用與實戰(zhàn)全書電子講義完整版課件_第5頁
已閱讀5頁,還剩537頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Nginx優(yōu)勢:I/O多路復用Web服務與Nginx安裝Nginx了解Web服務器軟件的整體發(fā)展趨勢掌握Nginx的安裝方式熟悉Nginx作為Web服務器軟件的優(yōu)勢熟悉多路復用的特點1.1Web服務與NginxWeb服務是給用戶提供登錄的平臺,以達到上網(wǎng)目的的服務。常用的Web服務器軟件。1.ApacheApache是一款Web服務器軟件,由于它的跨平臺性和安全性,至今一直是世界最流行的Web服務器軟件之一。2.LighttpdLighttpd是開源軟件中較為優(yōu)秀的Web服務器軟件之一,占用內(nèi)存少,對CPU處理速度進行了優(yōu)化。1.1.1Web服務簡介1.1Web服務與Nginx3.Node.jsNode.js是一款較為“年輕”的Web服務器軟件。4.NginxNginx是目前市場發(fā)展趨勢較為樂觀的一款Web服務器軟件,安裝更簡單、配置文件更簡潔、漏洞較少并且啟動容易等一系列優(yōu)勢。1.1.1Web服務簡介1.1Web服務與Nginx1.1.2

Web服務器軟件發(fā)展趨勢Web服務器軟件所占市場份額如表1.1所示。1.1Web服務與Nginx1.1.3

了解Nginx在互聯(lián)網(wǎng)普及之后,單臺服務器如何支持上萬并發(fā)量成為亟待解決的問題,這也是著名的“C10k問題”,而Nginx的誕生近乎完美地解決了這個問題。Nginx是一款高性能、輕量級的Web服務器軟件,是一款反向代理服務器軟件,也是一款郵箱代理服務器軟件。1.1Web服務與Nginx1.1.3

了解NginxApache與Nginx對比如表1.2所示。1.2Nginx優(yōu)勢:I/O多路復用1.2.1

I/O接口與I/O流I是指輸入接口(Input),O是指輸出(Output)。當傳輸數(shù)據(jù)時,數(shù)據(jù)通過I/O接口出入源地址與目標地址,I/O接口起到輸入和輸出的作用。I/O流可以抽象地理解為數(shù)據(jù)的序列以流的形式進行傳輸,主要處理設備之間的數(shù)據(jù)傳輸。當傳輸數(shù)據(jù)時,源地址通過接口輸出一個I/O流,I/O程序去讀取數(shù)據(jù),再將讀到的數(shù)據(jù)通過接口寫入目標地址。其實傳輸數(shù)據(jù)就是一個讀取和寫入的過程,如圖1.6、圖1.7所示。1.2Nginx優(yōu)勢:I/O多路復用1.2.2

理論方法在傳統(tǒng)的多線程并發(fā)中,每一個I/O流進入目標主機的時候,系統(tǒng)都會分配一個線程管理,如圖1.8所示。這樣一來,服務器與用戶之間就一直保持著同步聯(lián)系。如果服務器響應時間長,將會非常浪費資源。1.2Nginx優(yōu)勢:I/O多路復用1.2.2

理論方法I/O多路復用的原理是單個線程通過監(jiān)控每個I/O流,以類似撥開關(guān)的方式去管理多個會話,如圖1.9所示。其實就是當請求等待數(shù)據(jù)庫處理時,線程又去處理其他請求;當之前的請求返回時,線程又繼續(xù)處理之前的請求。這樣不僅增加了服務器的吞吐量,也就是在單位時間內(nèi)處理了更多請求,還減少了系統(tǒng)資源消耗。1.2Nginx優(yōu)勢:I/O多路復用1.2.3

多路復用的實現(xiàn)方式epoll實現(xiàn)了多路復用,epoll最大的特點就是異步、非阻塞。異步是指線程在將請求發(fā)送給數(shù)據(jù)庫處理時,它不會一直等待請求返回。而它不等待請求返回就去休息或者做別的事,這就是非阻塞。服務器端中每進來一個請求,會有一個線程去處理。但當它將請求發(fā)送給數(shù)據(jù)庫時,數(shù)據(jù)庫無法立即將請求返回,這就發(fā)生了阻塞。這時線程并不會一直等著,而是先去注冊一個事件。一旦請求返回,就會觸發(fā)之前注冊的事件,系統(tǒng)會通知這個線程回來接著處理之前的請求,這就是異步回調(diào)調(diào),如圖1.10所示。1.3

安裝Nginx1.3.1

Nginx版本類型Nginx版本分為三種類型:主線版、穩(wěn)定版、舊版。主線版是最新發(fā)布的版本,也就是說它的新漏洞還沒有被發(fā)現(xiàn),目前很少有人知道它的穩(wěn)定性如何。如果在生產(chǎn)環(huán)境中使用主線版,很可能出現(xiàn)新漏洞,為網(wǎng)站維護增加難度,還會對企業(yè)線上業(yè)務造成不必要的損失。舊版雖然相對主線版更加穩(wěn)定,但性能一般比穩(wěn)定版差。企業(yè)通常都選擇使用穩(wěn)定版,而主線版通常在測試環(huán)境中進行試用1.3

安裝Nginx1.3.1

Nginx版本類型官方版本,如圖1.12所示。1.3

安裝Nginx1.3.2

YUM安裝NginxNginx的安裝鏈接在它的版本類型的下方,單擊鏈接,在新頁面中找到所使用系統(tǒng)版本的安裝方式,如圖1.13、1.14所示。1.3

安裝Nginx1.3.2

YUM安裝Nginx下載yum-utils包,它是YUM倉庫的一個擴展庫。配置YUM倉庫,創(chuàng)建一個/etc/yum.repos.d/nginx.repo文件1.3

安裝Nginx1.3.2

YUM安裝Nginx安裝Nginx的穩(wěn)定版。安裝主線版,需要在使用安裝命令之前再執(zhí)行一條命令。啟動Nginx。1.3

安裝Nginx1.3.3

源碼安裝Nginx安裝編譯所需的工具和依賴庫.獲取源碼包,有兩種方式。方式一是直接從Nginx官方網(wǎng)站下載源碼包到計算機,然后通過終端模擬器用rz命令將其上傳。1.3

安裝Nginx1.3.3

源碼安裝Nginx彈出圖1.15所示的對話框,選擇源碼包所在路徑并單擊“確定”。1.3

安裝Nginx1.3.3

源碼安裝Nginx方式二是使用wget命令加源碼包鏈接直接將源碼包下載到服務器。將源碼包上傳至服務器后,創(chuàng)建一個放置它的文件夾。使用mv命令將源碼包移動到創(chuàng)建的文件夾中。進入放置源碼包的文件夾。解壓縮源碼包。1.3

安裝Nginx1.3.3

源碼安裝Nginx解壓之后會發(fā)現(xiàn)在文件夾中多了一個nginx-1.16.0文件夾,進入這個文件夾開始配置和檢測環(huán)境。接下來就是編譯和安裝。編譯和安裝停止和重啟需要用到絕對路徑。1.3

安裝Nginx1.3.4

訪問NginxNginx為用戶提供了訪問網(wǎng)站的平臺,訪問搭建好的Nginx服務。用戶在訪問之前需要關(guān)閉服務器的外部防火墻與內(nèi)部防火墻,否則訪問請求會被阻止。一種是永久關(guān)閉。另一種是臨時關(guān)閉。1.3

安裝Nginx1.3.4

訪問Nginx打開瀏覽器,輸入服務器的IP地址。當瀏覽器出現(xiàn)圖1.16所示的頁面時代表訪問成功。第2章網(wǎng)絡協(xié)議了解網(wǎng)絡協(xié)議了解HTTPHTTP詳解了解HTTP了解網(wǎng)絡協(xié)議HTTP詳解了解OSI模型熟悉URI、URL、URN三者的關(guān)系與含義熟悉TCP三次握手與四次揮手了解HTTP的工作原理2.1了解網(wǎng)絡協(xié)議網(wǎng)絡七層協(xié)議模型又叫作開放系統(tǒng)互連模型,簡稱OSI模型是一種常用的說法,它將復雜的網(wǎng)絡劃分為七層,使用戶可以更好地理解,如圖2.1所示。OSI模型劃分為物理層、傳輸層、會話層、數(shù)據(jù)鏈路層、網(wǎng)絡層、表示層、應用層。其中,層與層之間相互支持,每一層都服務于它的上一層,應用層直接服務于用戶。從應用層到傳輸層為高層,被稱為主機層,用來支持用戶操作;從網(wǎng)絡層到物理層為低層,被稱為媒體層,用來支持設備連接。2.1.1

OSI模型2.1了解網(wǎng)絡協(xié)議1.物理層物理層是OSI模型中的最底層,由物理設備(如計算機、服務器等)構(gòu)成。物理設備之間由媒體(如電纜、光纖等)連接,形成一個通路,供數(shù)據(jù)的傳輸。2.數(shù)據(jù)鏈路層數(shù)據(jù)鏈路層在物理層的傳輸基礎(chǔ)上優(yōu)化了傳輸功能。在這一層,協(xié)議規(guī)定數(shù)據(jù)傳輸?shù)穆肪€,每條數(shù)據(jù)都有特定的傳輸路線,這樣的傳輸路線就叫作數(shù)據(jù)鏈路。數(shù)據(jù)在數(shù)據(jù)鏈路中傳輸,保證了在傳輸過程中不會出錯,有助于更好地去服務網(wǎng)絡層,如圖2.3所示。2.1.1

OSI模型2.1了解網(wǎng)絡協(xié)議3.網(wǎng)絡層網(wǎng)絡層(NetworkLayer)解決在網(wǎng)絡中數(shù)據(jù)傳輸時的尋址、路由選擇以及連接的建立、保持、終止等問題。尋址就是尋找目標地址,路由是指數(shù)據(jù)傳輸?shù)穆肪€。4.傳輸層傳輸層(TransportLayer)基于網(wǎng)絡層進行設備之間的通信。它使用端口尋址的方式在兩個主機的應用程序之間進行數(shù)據(jù)傳輸,在傳輸層傳輸?shù)臄?shù)據(jù)叫作報文。傳輸層為會話層提供了可靠的傳輸。報文傳輸如圖2.4所示。2.1.1

OSI模型2.1了解網(wǎng)絡協(xié)議5.會話層會話層負責兩個設備中應用程序之間的會話管理、會話同步及重新同步。其中會話管理包括建立會話、會話保持及會話終止。在傳輸文件之前,源地址會給目標地址發(fā)送一個請求消息。目標地址收到請求消息后給源地址發(fā)送一個反饋,告訴它“我準備好接收了”,使源地址了解目標地址的狀態(tài),并作出相應的動作。當傳輸下一個文件時,又會發(fā)起這樣的會話,這就是會話同步。2.1.1

OSI模型2.1了解網(wǎng)絡協(xié)議會話連接會在一段完整的數(shù)據(jù)傳輸結(jié)束時,創(chuàng)建一個校驗點來記錄此刻的狀態(tài)。根據(jù)校驗點,可以在傳輸過程中發(fā)生中斷再重新開始時按照之前的狀態(tài)傳輸,不需要再將傳輸過的數(shù)據(jù)重新傳輸,這就是重新同步,如圖2.5所示。2.1.1

OSI模型2.1了解網(wǎng)絡協(xié)議6.表示層表示層可以對數(shù)據(jù)進行安全傳輸和語法翻譯,在會話層的基礎(chǔ)上使數(shù)據(jù)傳輸更加流暢。7.應用層應用層(ApplicationLayer)不同于其他層,它直接服務于用戶,為用戶提供應用服務。2.1.1

OSI模型2.1了解網(wǎng)絡協(xié)議五層劃分為應用層、傳輸層、網(wǎng)絡層、數(shù)據(jù)鏈路層、物理層,四層劃分為應用層、傳輸層、網(wǎng)絡層、網(wǎng)絡接口層。如圖2.6所示2.1.2TCP/IP模型2.1了解網(wǎng)絡協(xié)議2.1.2TCP/IP模型這里TCP/IP模型中的IP,不是指IP地址,而是指協(xié)議。IP通過IP地址與媒體訪問控制地址定位源地址和目標地址,達到傳輸數(shù)據(jù)的目的。四層與五層模型將七層模型做了簡化,如表2.1所示。2.1了解網(wǎng)絡協(xié)議TCP是一種可靠的傳輸層通信協(xié)議,基于字節(jié)流?;赥CP/IP傳輸?shù)臄?shù)據(jù)都被分段壓縮之后再進行傳輸,所以傳輸層傳輸?shù)臄?shù)據(jù)又被稱為包,也叫數(shù)據(jù)包。在傳輸過程中,TCP會將每個數(shù)據(jù)包編號,這樣即使數(shù)據(jù)包丟失也能及時發(fā)現(xiàn)并重新傳輸,如圖2.7所示。2.1.3

TCP2.1了解網(wǎng)絡協(xié)議1.創(chuàng)建連接——三次握手(1)第一次握手首先,服務器端創(chuàng)建傳輸控制塊,并進入監(jiān)聽狀態(tài),隨時可以與客戶端進行連接??蛻舳艘残枰獎?chuàng)建傳輸控制塊,接著向服務器端發(fā)送請求連接的報文,這是第一次握手。其中,報文包括:頭部SYN=1和序列號seq=x。由于這是一個SYN報文,所以不會傳輸數(shù)據(jù),但會消耗掉一個序列號,發(fā)送之后客戶端進入同步已發(fā)送(SYN-SENT)狀態(tài)。2.1.3

TCP2.1了解網(wǎng)絡協(xié)議(2)第二次握手服務器端收到請求連接的報文后,向客戶端發(fā)送確認報文,這是第二次握手。其中,報文中內(nèi)容為ACK=1、SYN=1、返回序列號ack=x+1,以及報文序列號seq=y,之后服務器端進入同步收到(SYN-RCVD)狀態(tài)。由于這個報文中也含有SYN,所以同樣不會傳輸數(shù)據(jù),但仍會消耗序列號。2.1.3

TCP2.1了解網(wǎng)絡協(xié)議(3)第三次握手客戶端收到確認報文后,同樣要給服務器端發(fā)送確認報文,這是第三次握手。其中,報文頭部是ACK=1,返回序列號是ack=y+1,并加入該報文的序列號seq=x+1,之后客戶端進入已建立連接(ESTABLISHED)狀態(tài)。這次的報文中不含有SYN,所以可以傳輸數(shù)據(jù)。如果不傳輸數(shù)據(jù),就不需要消耗序列號了。2.1.3

TCP2.1了解網(wǎng)絡協(xié)議服務器端收到來自客戶端的確認報文后,也進入已建立連接(ESTABLISHED)狀態(tài)。此時,TCP連接創(chuàng)建完成,如圖2.8所示。2.1.3

TCP2.1了解網(wǎng)絡協(xié)議2.終止連接——四次揮手(1)第一次揮手首先,客戶端向服務器端發(fā)送釋放連接報文,同時停止數(shù)據(jù)傳輸。釋放連接報文頭部為FIN=1,序列號為seq=u。發(fā)送之后,客戶端進入終止等待1(FIN-WAIT-1)狀態(tài)。無論FIN報文有沒有傳輸數(shù)據(jù),都需要消耗一個序列號。2.1.3

TCP2.1了解網(wǎng)絡協(xié)議(2)第二次揮手服務器端收到釋放連接報文之后,向客戶端發(fā)送確認報文,報文頭部為ACK=1,返回序列號ack=u+1、報文本身的序列號seq=v。這條報文發(fā)送之后,服務器端就會進入關(guān)閉等待(CLOSE-WAIT)狀態(tài)。這時,客戶端不再發(fā)送數(shù)據(jù),但仍可以接收數(shù)據(jù),而服務器端仍可以向客戶端發(fā)送數(shù)據(jù),這個狀態(tài)叫作半關(guān)閉狀態(tài)。這個狀態(tài)會持續(xù)一段時間,直到服務器端將所有數(shù)據(jù)發(fā)送完畢。2.1.3

TCP2.1了解網(wǎng)絡協(xié)議(3)第三次揮手客戶端收到服務器端的確認報文后,就會進入終止等待2(FIN-WAIT-2)狀態(tài),同時接收數(shù)據(jù)并等待服務器端發(fā)送釋放連接報文。服務器端將數(shù)據(jù)發(fā)送完之后,接著向客戶端發(fā)送釋放連接報文。報文頭部為FIN=1,序列號為ack=u+1,而在之前的半關(guān)閉狀態(tài)服務器端可能發(fā)送了數(shù)據(jù),并消耗了序列號,這里假設序列號為seq=w。將這條報文發(fā)送之后,服務器端就會進入最后確認(LAST-ACK)狀態(tài),并等待客戶端發(fā)送確認報文。2.1.3

TCP2.1了解網(wǎng)絡協(xié)議(4)第四次揮手客戶端收到釋放連接報文后,向服務器端發(fā)送確認報文。報文頭部為ACK=1,返回序列號為ack=w+1,報文本身的序列號為seq=u+1。發(fā)送之后,客戶端將進入時間等待(TIME-WAIT)狀態(tài)。這時,四次揮手已經(jīng)結(jié)束,但TCP連接仍然沒有釋放。2.1.3

TCP2.1了解網(wǎng)絡協(xié)議客戶端需要經(jīng)過最長報文段壽命,這個時間通常為2分鐘,將傳輸控制塊撤銷后,才進入關(guān)閉(CLOSED)狀態(tài)。而服務器端結(jié)束TCP連接要更早一些,它一收到確認報文,就立即撤銷傳輸控制塊并進入關(guān)閉狀態(tài),如圖2.9所示。2.1.3

TCP2.2了解HTTPHTTP是一種面向連接的、建立在TCP上的無狀態(tài)連接,服務于Web通信。HTTP先建立客戶端與服務器端的連接,再將客戶端的請求發(fā)送給服務器端,服務器端接收到請求后,按照請求給客戶端調(diào)用對應的文件,同時給客戶端發(fā)送一個響應信息。當客戶端接收服務器端所返回的信息后,將請求到的資源通過瀏覽器顯示出來,并斷開連接,如圖2.10所示。2.2.1

HTTP簡介2.2了解HTTPHTTP的連接基于TCP,具體連接流程如圖2.11所示。2.2.1

HTTP簡介2.2了解HTTP如果連接過程中出現(xiàn)錯誤,服務器端會將錯誤信息返回到客戶端,并顯示到瀏覽器上,如圖2.12所示。2.2.1

HTTP簡介2.2了解HTTP狀態(tài)碼是反映請求響應結(jié)果的一種方式,用于告知用戶請求執(zhí)行的結(jié)果,不同的狀態(tài)碼代表著不同的響應結(jié)果,狀態(tài)碼如表2.2~表2.6所示。2.2.1

HTTP簡介2.2了解HTTP2.2.1

HTTP簡介2.2了解HTTP2.2.1

HTTP簡介2.2了解HTTP2.2.1

HTTP簡介2.2了解HTTP在客戶端發(fā)送HTTP請求之前,要先與服務器端建立一個TCP連接,在TCP連接的基礎(chǔ)上完成HTTP請求與響應。在一次HTTP請求完成后,客戶端與服務器端的TCP連接并沒有關(guān)閉。在下一次HTTP請求開始時,可以直接使用這個現(xiàn)有的連接,不需要再進行三次握手,減少了資源消耗,這就是TCP長連接,如圖2.13所示。2.2.2

版本類型2.2了解HTTP如果在一次HTTP請求完成后就關(guān)閉TCP連接,那么下次請求時需要重新建立連接,這就叫作TCP短連接,如圖2.14所示。2.2.2

版本類型2.2了解HTTP1.HTTP/0.9HTTP/0.9是HTTP的初始版本,它的結(jié)構(gòu)簡單,只能執(zhí)行簡單的GET請求方式,并且只能訪問HTML格式的資源。2.HTTP/1.0它增加了POST和HEAD請求方式,同時可以訪問很多不同格式的資源,支持多種數(shù)據(jù)格式。另外,也支持高速緩存器(Cache),在規(guī)定時間內(nèi)用戶再次訪問之前的資源,只需要訪問Cache即可,減少了響應時間。但是1.0版本只能支持短連接,每一次請求都會經(jīng)歷三次握手和四次揮手,所以發(fā)送速度較慢。2.2.2

版本類型2.2了解HTTP資源格式類型的增多,又給1.0版本添加了一個任務,那就是告訴客戶端所請求資源的格式類型。這些格式類型又被叫作多用途互聯(lián)網(wǎng)郵件擴展類型。。常見的MIME如表2.7所示。2.2.2

版本類型2.2了解HTTP3.HTTP/1.1HTTP/1.1最大的優(yōu)勢就是在一個完整的HTTP請求結(jié)束之后,TCP連接是默認不關(guān)閉的,可以在下一次HTTP請求的時候接著使用這個TCP連接,完美地支持了長連接。在HTTP/1.1中,不僅TCP連接可以進行復用,客戶端還可以在同一個TCP連接中同時發(fā)送多個請求,如圖2.16所示。2.2.2

版本類型2.2了解HTTP4.HTTP/2.0HTTP/2.0很好地解決了請求到達服務器端發(fā)生阻塞,服務器端只能依次處理單個請求這個問題,它支持服務器端多個進程同時處理,從請求到響應形成了一個順暢的閉路,如圖2.18所示。HTTP/2.0還提供服務器推送。2.2.2

版本類型2.2了解HTTP在互聯(lián)網(wǎng)中,每個資源都由一個URI進行標識,用來區(qū)分不同。URI包含了URL與URN。URL用于資源定位,也就是人們常說的網(wǎng)頁地址。統(tǒng)一資源名稱(UniformResourceName,URN)用于標記資源名稱,每一項資源都有其特定的URN,如圖2.19所示。2.2.3

URI2.2了解HTTPURL并不是單個的個體,而是由多個必要或可選的部分組成的。URL以字符串的形式來描述內(nèi)容,一個URL資源對應一個Web資源,如圖2.20所示。2.2.4

URL語法2.2了解HTTP協(xié)議是指用戶告訴瀏覽器使用何種協(xié)議,大部分網(wǎng)站都是使用HTTP或者它的安全版協(xié)議(HTTPS)。一些常見的協(xié)議,如表2.8所示。2.2.4

URL語法用圖2.21所示的URL來詳細解析它的組成部分。2.2了解HTTP通常端口是指設備與外界通信的接口,這里的端口是指虛擬端口,如圖2.24所示。2.2.4

URL語法域名在URL中也被稱為主機名,如圖2.23所示。2.2了解HTTP不同協(xié)議對應著不同端口,常見的端口號如表2.9所示。2.2.4

URL語法2.2了解HTTP在服務器端查詢信息時,服務器端會根據(jù)用戶提供的信息進行查詢,而用戶提供的信息將會以鍵值對的形式顯示到URL中,用戶所提供的信息就叫作用戶查詢參數(shù),如圖2.26所示。2.2.4

URL語法URL中顯示的路徑其實是虛構(gòu)的,它不是服務器中的真實路徑,而是象征性地顯示一個路徑,但路徑是真實存在的,如圖2.25所示。2.2了解HTTPURL中,“#”號之后的內(nèi)容叫作片段標識符,字面上理解就是某些內(nèi)容的其中一段。用戶在網(wǎng)頁中單擊某一個標題之后會顯示相關(guān)內(nèi)容,其實這也就是網(wǎng)站內(nèi)容的某一段,也叫作錨點。這個技術(shù)在前端HTML中也被稱作超鏈接,相當于一個目錄。。片段標識符不會與請求一起發(fā)送到服務器端,如圖2.27所示。2.2.4

URL語法2.3HTTP詳解HTTP是一種用戶服務協(xié)議,由一個用戶代理向服務器端發(fā)送請求。HTTP流程如圖2.28所示。2.3.1

HTTP系統(tǒng)組成在HTTP另一端的是Web服務器端,由它來提供客戶端所請求的資源。2.3HTTP詳解2.3.2

HTTP請求方式常見的HTTP請求方式如表2.10所示。2.3HTTP詳解1.GETGET是HTTP中最常用的請求方式之一,它代表獲取、取得。當客戶端向服務器端“要”資源的時候,請求方式為GET,如圖2.30所示。2.3.2

HTTP請求方式2.POSTPOST是一種將數(shù)據(jù)交給服務器端去處理的HTTP請求方式??蛻舳藢⒄埱笈c數(shù)據(jù)一起發(fā)送到服務器端,服務器端將處理結(jié)果返回給客戶端,如圖2.31所示。2.3HTTP詳解3.DELETEDELETE是刪除指定內(nèi)容的請求,也像POST一樣將請求發(fā)送到服務器端,只不過DELETE不會發(fā)送數(shù)據(jù),服務器端處理之后也會將處理結(jié)果返回給客戶端。4.PUTPUT是以指定數(shù)據(jù)替換指定內(nèi)容的請求方式。它也是將請求與要替換的數(shù)據(jù)一同發(fā)送到服務器端,服務器端處理好之后再將處理結(jié)果返回給客戶端。2.3.2

HTTP請求方式2.3HTTP詳解1.請求報文請求報文是客戶端發(fā)送給服務器端的報文,它的內(nèi)容由4部分組成,分別是請求行、請求頭部、空行、請求數(shù)據(jù),如圖2.32所示。請求行又分為三部分,分別是請求方式、URL、協(xié)議版本。請求方式是客戶端需要服務器端做的行為描述。URL是客戶端指定的網(wǎng)址。協(xié)議版本是瀏覽器所支持的HTTP版本。2.3.3

報文2.3HTTP詳解2.響應報文響應報文是在服務器端處理完請求報文之后,返回給客戶端的報文,如圖2.33所示。響應報文由三部分組成,分別是狀態(tài)行、響應頭部、響應正文。行又分為三部分,分別是協(xié)議版本、狀態(tài)碼、狀態(tài)碼描述。2.3.3

報文2.3HTTP詳解1.Linux報頭在Linux操作系統(tǒng)中通過wget下載資源,分析報文頭部的信息。2.3.4

報頭分析2.3HTTP詳解在終端上就能看到HTTP請求的全部過程部的信息。2.3.4

報頭分析2.3HTTP詳解對參數(shù)做詳細解釋。Accept表示可以接收的文件類型,“*/*”表示可以接收任何格式類型的文件。Server表示服務器的信息。Date表示響應的時間。Content-Type表示響應的數(shù)據(jù)類型,這里是application/octet-stream。Content-Length表示源碼包的大小,它的單位是字節(jié)(Byte)。Last-Modified表示資源在服務器端最后被修改的時間。Connection表示連接類型。Keep-Alive表示連接有效期。ETag是HTTP響應頭部中資源的特定版本的標識符,可以讓資源緩存到客戶端。

Accept-Ranges是響應頭部中服務器端用來表明是否指定范圍請求的信息,范圍2.3.4

報頭分析2.3HTTP詳解2.瀏覽器報頭打開任意網(wǎng)頁,如圖2.34所示。2.3.4

報頭分析2.3HTTP詳解先從報文標頭開始分析,這里的標頭就是請求行,如圖2.36所示。2.3.4

報頭分析分析請求標頭的內(nèi)容,如圖2.37所示。2.3HTTP詳解瀏覽器中的報文內(nèi)容與Linux操作系統(tǒng)不同的部分。Accept-Encoding表示可接受的編碼類型。Accept-Language表示可接受的語言與國家或地區(qū)。zh-CN中zh代表簡體中文,CN代表中國,表示可接受簡體中文。有了這條信息,文本資源才會以簡體中文的形式顯示到瀏覽器中。Cache-Control表示客戶端對服務器端資源緩存的要求,這里no-cache表示不需要進行緩存。User-Agent是客戶端的附加信息,方便服務器端獲取客戶端的設備信息。2.3.4

報頭分析2.3HTTP詳解2.3.4

報頭分析對來自服務器端的報文進行分析,如圖2.38所示。2.3HTTP詳解來自服務器端的響應報文也叫作響應標頭,它的內(nèi)容相較于請求標頭更加豐富。Cache-Control這一行內(nèi)容明顯與請求標頭不同,之前客戶端并沒有對資源緩存進行要求,于是這里就將緩存時間設為服務器端默認的時間——604800秒。Content-Encoding表示資源內(nèi)容的編碼格式信息。Content-Type說明了資源內(nèi)容的類型是文本與層疊樣式表,text指文本,css指層疊樣式表——HTML語言的一個應用。

Expires表示資源過期時間。由于Cache-Control已經(jīng)設置了時間,所以這條信息將被忽略。Transfer-Encoding表示傳輸方式,chunked表示分段傳輸。Vary標頭中的信息用于防止錯誤的緩存,Accept-Encoding表示緩存“壓縮與非壓縮”兩種版本的資源,也表示接受編碼格式。2.3.4

報頭分析第3章Nginx基礎(chǔ)配置配置文件編譯參數(shù)配置文件詳解虛擬主機編譯參數(shù)配置文件配置文件詳解虛擬主機了解Nginx配置文件掌握Nginx基本配置熟悉Nginx編譯參數(shù)3.1配置文件查詢并列出配置文件。3.1.1

關(guān)鍵配置文件3.1配置文件1.日志輪轉(zhuǎn)文件/etc/logrotate.d/nginx是日志輪轉(zhuǎn)文件,日志輪轉(zhuǎn)的配置都在這里。2.主配置文件主配置文件/etc/nginx/nginx.conf中,記錄著Nginx的主要信息,通常擴展名為“.conf”的都是配置文件,而文件名與主程序名一樣的配置文件就是主配置文件。3.1.1

關(guān)鍵配置文件3.1配置文件3.子配置文件/etc/nginx/conf.d是Nginx的子配置文件夾,這里包括默認網(wǎng)站配置文件,還有后續(xù)增加的配置文件,通常擴展名為“.d”的目錄為子配置文件夾。4.默認網(wǎng)站配置文件/etc/nginx/conf.d/default.conf是最基礎(chǔ)的子配置文件,是Nginx訪問頁面的配置文件。3.1.1

關(guān)鍵配置文件3.1配置文件5.文件關(guān)聯(lián)程序/etc/nginx/mime.types是文件關(guān)聯(lián)程序。它記錄著各種文件類型所對應的程序,也就是什么類型的文件由什么程序來打開。6.模塊文件夾模塊文件夾用來放置Nginx模塊,由于這些模塊的種類繁多,所以系統(tǒng)為它們創(chuàng)建了一個專門的文件夾。7.服務腳本服務腳本可以簡化工程師對Nginx的操作,例如,YUM安裝的Nginx不需要絕對路徑就可以執(zhí)行啟動、關(guān)閉、重啟,這都是服務腳本的功勞。3.1.1

關(guān)鍵配置文件3.1配置文件8.主程序Nginx的主程序都寫在了/usr/sbin/nginx,不可隨意更改。9.文檔Nginx文檔都會在/usr/share/doc/nginx-1.16.1/中出現(xiàn)。其中,/usr/share/doc/nginx-1.16.1/COPYRIGHT是Nginx開發(fā)者的聲明文檔。10.man手冊man手冊是指軟件的說明書,在使用之前都會先查看man手冊3.1.1

關(guān)鍵配置文件3.1配置文件11.默認頁面文件默認頁面文件在/usr/share/nginx/html中,這里通常默認有兩個文件;/usr/share/nginx/html/index.html是默認主頁的文件,/usr/share/nginx/html/50x.html是默認錯誤頁面文件。12.緩存文件緩存文件/var/cache/nginx/用于存放緩存。13.日志文件夾日志文件夾中存放著各種類型的日志。3.1.1

關(guān)鍵配置文件3.1配置文件其他配置文件對運維工程師來說很少會接觸到,在這里簡單了解一下這些文件,/etc/nginx/fastcgi_params#動態(tài)網(wǎng)站模塊文件/etc/nginx/koi-utf#字符集,文件編碼/usr/lib/systemd/system/nginx-debug.service#調(diào)試程序啟動腳本/etc/sysconfig/nginx#系統(tǒng)守護進程配置/etc/sysconfig/nginx-debug#管理器配置/usr/lib64/nginx#模塊目錄/usr/lib64/nginx/modules/usr/sbin/nginx-debug#調(diào)試程序3.1.2

其他配置文件3.1配置文件1.動態(tài)網(wǎng)站模塊文件Nginx使用中間件(如Java、PHP等)去調(diào)用數(shù)據(jù),動態(tài)網(wǎng)站模塊文件成為Nginx與中間件對接的接口,如圖3.1所示。3.1.2

其他配置文件3.1配置文件2.字符集字符集用來翻譯高級編程語言。/usr/lib/systemd/system/nginx-debug.service、/etc/sysconfig/nginx、/etc/sysconfig/nginx-debug都屬于系統(tǒng)守護進程和管理器的相關(guān)配置,/usr/lib64/nginx是Nginx的模塊目錄,/usr/sbin/nginx-debug是Nginx調(diào)試程序,用來調(diào)試終端命令。3.1.2

其他配置文件3.2編譯參數(shù)使用命令查看Nginx所有參數(shù)[root@nginx~]#nginx-V3.2.1

基礎(chǔ)參數(shù)3.2編譯參數(shù)1.錯誤日志錯誤日志是記錄客戶端訪問出錯的日志文件。3.2.1

基礎(chǔ)參數(shù)2.程序ID程序ID,也叫pid,用來標記程序的序號,表明程序的身份,有了這個序號就可以防止同一個程序再次啟動。執(zhí)行之后會看到一個數(shù)字,這個數(shù)字就是pid,如圖3.4所示3.2編譯參數(shù)3.網(wǎng)站客戶端臨時緩存用戶在一段時間內(nèi)訪問過的資源都會被暫時存放到網(wǎng)站客戶端臨時緩存文件,當用戶再次訪問時,方便調(diào)取。。http-proxy-temp-path是Nginx作為代理服務器時的緩存。http-fastcgi-temp-path、http-uwsgi-temp-path以及http-scgi-temp-path都是網(wǎng)站中間件緩存。3.2.1

基礎(chǔ)參數(shù)3.2編譯參數(shù)3.2.2

模塊參數(shù)Nginx的模塊編譯參數(shù)3.2編譯參數(shù)1.動態(tài)兼容模塊動態(tài)兼容模塊用于處理動態(tài)的請求。2.a(chǎn)io模塊aio(file-aio)模塊就是I/O多路復用模塊,用于加速系統(tǒng)處理。3.多線程模塊多線程模塊(threads)支持Nginx開啟多個線程,但軟件最終還是基于硬件。4.追加模塊追加模塊(addition_module)可以在網(wǎng)頁中追加內(nèi)容。5.認證模塊認證模塊(auth_request_module)用于認證用戶信息。3.2.1

基礎(chǔ)參數(shù)3.2編譯參數(shù)當Nginx服務器端處理請求時,會在內(nèi)部生成一個子請求,這個子請求是屬于Nginx服務器端內(nèi)部的,與客戶端沒有關(guān)系。,如圖3.6所示3.2.1

基礎(chǔ)參數(shù)3.2編譯參數(shù)6.上傳下載模塊上傳下載模塊(dav_module)可供用戶在網(wǎng)站中上傳或下載資源。7.視頻模塊視頻模塊(flv_module)用于支持視頻資源的播放。8.解壓與壓縮模塊解壓縮模塊(gunzip_module)與壓縮模塊(gzip_static_module)用于解壓縮和壓縮文件。3.2.1

基礎(chǔ)參數(shù)3.2編譯參數(shù)9.多媒體模塊多媒體模塊(mp4_module)用于支持多媒體文件在網(wǎng)站中的正常運行。10.隨機主頁模塊當用戶登錄網(wǎng)站時,隨機主頁模塊(random_index_module)將網(wǎng)頁文件夾中的網(wǎng)頁文件隨機打開一個呈現(xiàn)給用戶。3.2.1

基礎(chǔ)參數(shù)3.2編譯參數(shù)11.獲取真實IP模塊獲取真實IP模塊開啟之后,就會告訴Nginx哪個是反向代理的IP地址,當Nginx獲取IP地址找到反向代理的IP地址時,就會自動忽略,接著去找用戶真實的IP地址,如圖3.7所示。3.2.1

基礎(chǔ)參數(shù)3.2編譯參數(shù)12.安全下載模塊在Nginx下載資源之前,它的安全下載模塊(secure_link_module)會對資源鏈接進行檢查,檢查鏈接是否安全,是否過期。如圖3.8所示。3.2.1

基礎(chǔ)參數(shù)3.2編譯參數(shù)13.分片緩存模塊當Nginx需要緩存較大的文件而難以處理時,就通過分片緩存模塊(slice_module)將需要緩存的文件拆分成多個部分,再進行緩存。14.安全模塊安全模塊(ssl_module)是維護Nginx信息安全的模塊,通過加密、解密(ssl)的手段對HTTPS進行支持。15.訪問狀態(tài)模塊訪問狀態(tài)模塊(stub_status_module)為用戶的訪問情況做一個統(tǒng)計,如活躍的鏈接數(shù)、已接受的客戶端鏈接數(shù)、已處理的鏈接總數(shù)等。3.2.1

基礎(chǔ)參數(shù)3.2編譯參數(shù)16.網(wǎng)頁替換模塊當網(wǎng)頁內(nèi)容需要進行修改時,可以通過網(wǎng)頁替換模塊(sub_module)進行修改。17.HTTP/2.0模塊HTTP/2.0模塊(v2_module)是HTTP的2.0版本,默認是關(guān)閉狀態(tài)。18.郵箱模塊通過開啟郵箱模塊(mail),Nginx服務器就可以成為一臺郵箱服務。19.數(shù)據(jù)流模塊數(shù)據(jù)流模塊可以實現(xiàn)4層協(xié)議的流量轉(zhuǎn)發(fā)、反向代理、負載均衡等。3.2.1

基礎(chǔ)參數(shù)3.3

配置文件詳解對Nginx的主配置文件進行詳解。主配置文件分為三個模塊:核心模塊(CoreModule)、事件驅(qū)動模塊(EventsModule)、HTTP內(nèi)核模塊(HttpCoreModule)。1.核心模塊。user nginx;#運行Nginx的用戶worker_processes 1;#啟動的進程數(shù)error_log /var/log/nginx/error.logwarn;#錯誤日志存放位置的通知pid /var/run/nginx.pid;#pid存放位置3.3.1

主配置文件3.3

配置文件詳解2.事件驅(qū)動模塊events{#事件worker_connections 1024;#每個進程允許的最大連接數(shù)accept_mutexon;#防止浪費進程資源multi_acceptoff;#一個進程連接能否有多個網(wǎng)絡連接client_header_buffer_size4k;#請求頭部大小open_file_cachemax=2000inactive=60s;#最大緩存數(shù)和最長緩存時長open_file_cache_valid60s;#檢查緩存時間open_file_cache_min_uses1#緩存最少使用次數(shù)}3.3.1

主配置文件3.3

配置文件詳解1.a(chǎn)ccept_mutex當有請求進入服務器端時,accept_mutex會防止所有休眠中的進程被喚醒。2.multi_accept通過multi_accept設置一個進程是否可以同時接收多個網(wǎng)絡連接,通常默認為關(guān)閉。3.client_header_buffer_sizeclient_header_buffer_size用來設置服務器端要求的請求頭部大小。4.open_file_cacheopen_file_cache是關(guān)于緩存的配置,其中max表示最大緩存數(shù),inactive表示多長時間內(nèi)資源沒有被調(diào)用將被刪除。valid表示多長時間檢查一次緩存。3.3.1

主配置文件3.3

配置文件詳解內(nèi)核模塊http{include/etc/nginx/mime.types;#包含文件關(guān)聯(lián)程序default_type application/octet-stream;#默認處理信息方式,字節(jié)流log_format main '$remote_addr-$remote_user[$time_local]"$request"''$status$body_bytes_sent"$http_referer"''"$http_user_agent""$http_x_forwarded_for"';#日志格式access_log /var/log/nginx/access.log main;#成功訪問日志sendfileon;#優(yōu)化參數(shù),高效傳輸文件模式#tcp_nopushon;#優(yōu)化參數(shù),避免網(wǎng)絡阻塞keepalive_timeout65;#優(yōu)化參數(shù),長連接#gzipon;#解壓參數(shù)include/etc/nginx/conf.d/*.conf;#包含子配置的文件夾}3.3.1

主配置文件3.3

配置文件詳解5.includeinclude表示包含的意思,后面是一個文件路徑,代表在這里包含了這個文件的內(nèi)容。6.default_typedefault_type表示默認的處理信息方式,通常默認方式是字節(jié)流。7.log_formatmainlog_format是日志格式,也就是Nginx寫日志的格式,也可以進行合理修改。8.a(chǎn)ccess_logaccess_log是指成功訪問的日志,后面是存放它的路徑。3.3.1

主配置文件3.3

配置文件詳解3.3.2

默認配置文件觀察Nginx的默認虛擬主機配置文件3.3

配置文件詳解1.listenlisten表示監(jiān)聽,通常后面是端口號,代表服務運行的端口。2.server_nameserver_name表示服務名,也叫主機名,其實是指網(wǎng)站域名。location{}中的內(nèi)容是Nginx作為Web服務器的網(wǎng)頁文件信息。3.rootroot在系統(tǒng)中是超級用戶的意思,在這里表示網(wǎng)站網(wǎng)頁主目錄。4.indexindex在這里表示默認頁面,后面是存放默認頁面的路徑。3.3.2

默認配置文件3.3

配置文件詳解這些內(nèi)容定位了主頁目錄與網(wǎng)頁文件,保存退出之后需要去創(chuàng)建這些文件與目錄。3.3.3

修改配置文件創(chuàng)建成功之后,在網(wǎng)頁文件中追加一些簡單的內(nèi)容,這就是網(wǎng)頁要顯示的內(nèi)容。3.3

配置文件詳解本地解析,在文件中添加服務器的IP地址與配置文件中的主機名,如圖3.13所示。3.3.3

修改配置文件3.3

配置文件詳解添加字符集。3.3.3

修改配置文件修改之后,接著訪問服務器主機,訪問結(jié)果如圖3.15所示。3.4虛擬主機首先使用端口區(qū)分。創(chuàng)建網(wǎng)頁配置文件。3.4.1

基于端口在文件中添加相關(guān)配置。3.4虛擬主機重啟Nginx服務,使配置生效3.4.1

基于端口添加放置網(wǎng)站內(nèi)容的文件夾添加第一個網(wǎng)頁文件,這里的文件名與目錄名必須按照配置文件中的內(nèi)容創(chuàng)建。3.4虛擬主機將第一個網(wǎng)頁文件備份到同一文件夾下,作為第二個網(wǎng)頁文件。3.4.1

基于端口index2.html文件中的內(nèi)容進行修改,這樣便于區(qū)分。3.4虛擬主機使用IP地址加端口訪問服務器的8080端口,如圖3.16所示。3.4.1

基于端口訪問服務器的8081端口,如圖3.17所示。3.4虛擬主機進入網(wǎng)卡配置文件所在的目錄將網(wǎng)卡配置文件進行備份。打開備份后的文件,將文件中的設備選項(DEVICE)改為當前文件名。3.4.2

基于IP3.4虛擬主機網(wǎng)卡配置已經(jīng)完成,將網(wǎng)絡重啟,使配置生效。查看IP地址,驗證是否成功。3.4.2

基于IP3.4虛擬主機3.4.2

基于IP通過主機配置文件進行配置。3.4虛擬主機3.4.2

基于IP網(wǎng)頁文件創(chuàng)建成功之后,開始訪問第一個IP地址,結(jié)果如圖3.18所示。第一個網(wǎng)站訪問成功之后,接著訪問第二個IP地址,訪問結(jié)果如圖3.19所示。3.4虛擬主機當主配置文件需要調(diào)用某一子配置文件時,就通過在主配置文件中寫入命令與需要調(diào)用的子配置文件路徑來進行調(diào)用。

在Nginx中,主配置文件與頁面配置文件是分開寫的,但在HTTP內(nèi)核模塊中,使用包含命令引入頁面配置文件。3.4.3

引入子配置文件3.4虛擬主機進行實驗操作。先創(chuàng)建放置自定義子配置文件的目錄。

3.4.3

引入子配置文件創(chuàng)建自定義子配置文件并添加內(nèi)容。 3.4虛擬主機3.4.3

引入子配置文件創(chuàng)建網(wǎng)頁目錄與文件,并添加自定義內(nèi)容。 修改主配置文件。 3.4虛擬主機3.4.3

引入子配置文件在主配置文件中將默認網(wǎng)頁配置一行注釋。修改并重啟服務之后,再次對服務器IP地址進行訪問,訪問結(jié)果如圖3.20所示。第4章Nginx日志日志配置日志輪轉(zhuǎn)與切割日志分析日志輪轉(zhuǎn)與切割日志配置日志分析了解訪問日志與錯誤日志掌握統(tǒng)計日志方式熟悉日志輪轉(zhuǎn)與切割4.1日志配置日志模塊會在客戶端訪問服務器端時,從Web服務中讀取數(shù)據(jù),再將讀取到的數(shù)據(jù)寫入日志文件,如圖4.1所示。4.1日志配置訪問日志語法:查看Nginx日志配置:4.1.1格式與命令4.1日志配置4.1.1格式與命令1.$remote_addr客戶端的IP地址。2.$remote_user客戶端的用戶名。3.[$time_local]服務器時間。4.$request請求。5.$status表示請求結(jié)果,即狀態(tài)碼。4.1日志配置4.1.1格式與命令6.$body_bytes_sent服務器端發(fā)送給客戶端內(nèi)容的字節(jié)數(shù)。7.$http_referer引用。8.$http_user_agent表示客戶端信息。9.$http_x_forwarded_for表示代理IP地址。4.1日志配置4.1.2訪問日志與錯誤日志1.訪問日志4.1日志配置4.1.2訪問日志與錯誤日志將該日志拆分為多個片段進行講解。05是遠程客戶端的IP地址。此處的用戶由占位符表示。[17/Dec/2017:14:45:59+0800]表示服務器系統(tǒng)時間。GET是客戶端的請求方式。/nginx-logo.png表示客戶端所請求的文件,此處為圖片文件。HTTP/1.1為HTTP版本。200表示狀態(tài)碼。368表示文件大小。0/表示引用的鏈接。Mozilla/5.0(WindowsNT6.1;WOW64;rv:57.0)Gecko/20100101Firefox/57.0表示客戶端信息,如瀏覽器版本、瀏覽器名稱等。末尾的占位符表示代理IP地址,此處沒有代理服務器,所以由占位符表示。4.1日志配置4.1.2訪問日志與錯誤日志2.錯誤日志演示將404界面?zhèn)€性化的操作。在Nginx主頁配置文件中添加相關(guān)配置。4.1日志配置4.1.2訪問日志與錯誤日志按照主頁配置文件中的內(nèi)容,創(chuàng)建對應的目錄與文件。需要添加的圖片上傳至服務器/qianfeng目錄下,并授予圖片相關(guān)權(quán)限。4.2日志輪轉(zhuǎn)與切割日志輪轉(zhuǎn)規(guī)則文件。4.2日志輪轉(zhuǎn)與切割/var/log/nginx/*.log表示日志輪轉(zhuǎn)對象。daily表示日志輪轉(zhuǎn)周期,即一天輪轉(zhuǎn)一次,可根據(jù)日志大小配置。missingok表示丟失不提示。rotate52表示保留份數(shù),此處為52份,超過52份將進行輪轉(zhuǎn)。compress表示需要對日志進行壓縮。Delaycompress表示延遲壓縮,為節(jié)省CPU,可以在日志積累到一定量時,再進行壓縮。4.2日志輪轉(zhuǎn)與切割Notifempty表示空文件不輪轉(zhuǎn),即在日志文件中沒有內(nèi)容時,不進行輪轉(zhuǎn)。create640nginxadm表示創(chuàng)建新日志文件,授予其640權(quán)限,并將屬主設為nginx,屬組設為adm。sharedscripts表示所有文件歸檔完成后執(zhí)行腳本。postrotate表示日志切割后執(zhí)行的命令。endscript表示腳本終止。4.2日志輪轉(zhuǎn)與切割日志輪轉(zhuǎn)過程。第一步,對舊日志文件的文件名稱進行修改。第二步,向Nginx主進程發(fā)送USR1信號,Nginx收到信號后將會創(chuàng)建新日志文件,并以Nginx進程的屬主作為新日志文件的屬主。此時Nginx將會把日志寫入新日志文件,并可以對舊日志文件進行切割。4.2日志輪轉(zhuǎn)與切割Nginx日志文件還可以進行手動輪轉(zhuǎn),查看/var/log/nginx/下的文件。4.3日志分析PV是指在特定時間內(nèi)服務器端被訪問的總次數(shù),UV是指在特定時間內(nèi)訪問服務器端用戶的數(shù)量。日志分析的本質(zhì)是對服務器端的訪問量進行多角度的統(tǒng)計,如PV、UV等。1.統(tǒng)計PV量2.統(tǒng)計UV量4.3日志分析3.統(tǒng)計多次訪問的用戶IP地址4.統(tǒng)計訪問最多的頁面4.3日志分析5.統(tǒng)計訪問內(nèi)容大小6.統(tǒng)計狀態(tài)碼第5章Web模塊隨機主頁模塊替換模塊文件讀取模塊文件壓縮模塊緩存模塊防盜鏈模塊連接狀態(tài)模塊替換模塊隨機主頁模塊文件讀取模塊緩存模塊文件壓縮模塊防盜鏈模塊連接狀態(tài)模塊熟悉

連接狀態(tài)的查詢方式掌握Web模塊的使用方式了解

Web模塊的工作原理5.1隨即主頁模塊演示隨機主頁的配置方式。創(chuàng)建一個放置主頁面文件的目錄.再創(chuàng)建多個主頁面文件。在d.html文件之前添加了一個“.”,表示這是一個隱藏文件,通常不會顯示出來。由于d.html是隱藏文件,當查看文件時需要添加-a參數(shù)。5.1隨即主頁模塊在不同文件中添加不同的內(nèi)容5.1隨即主頁模塊當配置d.html文件時,必須在文件名稱前添加“.”,否則默認為創(chuàng)建新文件。5.1隨即主頁模塊主頁文件都配置完成之后,開始修改配置文件.5.1隨即主頁模塊重啟Nginx服務之后,通過瀏覽器訪問服務器IP地址址,如圖5.2、圖5.3、圖5.4所示。5.2替換模塊在主頁配置文件中添加替換模塊配置。5.2替換模塊配置完成之后,訪問服務器IP地址,如圖5.7所示。5.2替換模塊將配置文件中單次替換的配置關(guān)閉,即可進行全局替換。5.3文件讀取模塊sendfile表示文件發(fā)送,是用于管理文件發(fā)送的模塊。sendfile的具體語法。5.3.1sendfile5.3文件讀取模塊相較于傳統(tǒng)的文件發(fā)送方式,sendfile為Nginx在發(fā)送文件時節(jié)省了時間,提高了文件發(fā)送的效率,如圖5.10所示。5.3.1sendfile5.3文件讀取模塊tcp_nopush是負責管理流量發(fā)送的模塊。tcp_nopush的具體語法。5.3.2

tcp_nopush5.3文件讀取模塊tcp_nopush類似于連接中的一個開關(guān),當流量積攢到一定量時,開關(guān)打開發(fā)送流量,當一個數(shù)據(jù)包發(fā)送完成之后又關(guān)閉開關(guān),如圖5.12所示。5.3.2

tcp_nopush5.3文件讀取模塊tcp_nodelay同樣是負責管理流量發(fā)送的模塊,但與tcp_nopush不同,tcp_nodelay允許Nginx即時發(fā)送數(shù)據(jù)。tcp_nodelay的具體語法。5.3.3

tcp_nodelay5.3文件讀取模塊tcp_nodelay只有在TCP連接轉(zhuǎn)變?yōu)殚L連接時才會被啟用,并且會禁用Nagle算法,也就是將數(shù)據(jù)包立即發(fā)送出去,如圖5.13所示。5.3.3

tcp_nodelay5.3文件讀取模塊查看Nginx主配置文件中關(guān)于文件讀取模塊的配置。5.3.3

tcp_nodelay文件讀取模塊中有sendfile和tcp_nopush,但由于不確定用戶的業(yè)務情況,所以tcp_nopush的配置前有一個注釋符,當用戶需要時刪除注釋符即可。而Nginx主配置文件中沒有關(guān)于tcp_nodelay的配置,說明它默認是關(guān)閉的,當用戶需要時在文件中添加“tcp_nodelayon”即可。5.4文件壓縮模塊文件壓縮是計算機中常用的功能,它將多個文件或多個目錄整合,最終生成一個小的壓縮包文件。將壓縮包文件傳輸給其他用戶,其他用戶收到壓縮包文件后,再將文件解壓縮,使文件恢復到原來的體積。5.4.1

原理與語法5.4文件壓縮模塊文件壓縮模塊的語法分為三種:開啟或關(guān)閉、壓縮比例、模塊版本。1.開啟或關(guān)閉5.4.1

原理與語法2.壓縮比例3.模塊版本5.4文件壓縮模塊通過在頁面中GET文件的方式,驗證壓縮模塊的應用效果。首先準備一臺服務器,在主頁面文件所在目錄下分別上傳圖片、壓縮包及文本文件。5.4.2

示例與驗證5.4文件壓縮模塊在URL后添加文件路徑即可訪問文件,如圖5.15所示。5.4.2

示例與驗證此處訪問的是文本文件,在開發(fā)者模式界面中選擇“網(wǎng)絡”,將會看到該文件傳輸時的體積,如圖5.16所示。5.4文件壓縮模塊訪問圖片文件,如圖5.17所示。5.4.2

示例與驗證訪問壓縮包文件,如圖5.18所示。5.4文件壓縮模塊修改Nginx主配置文件,為Nginx添加文件壓縮模塊。5.4.2

示例與驗證5.4文件壓縮模塊配置完成后,重啟Nginx服務,訪問文本文件,如圖5.19所示5.4.2

示例與驗證訪問圖片文件,如圖5.20所示。5.5緩存模塊緩存是指不將數(shù)據(jù)存儲到數(shù)據(jù)庫中,而直接存儲到Web服務器的內(nèi)存中,方便服務器隨時調(diào)用數(shù)據(jù)。下面通過瀏覽器訪問任意網(wǎng)站,如圖5.21所示。5.5緩存模塊下面將取消選擇瀏覽器中“禁用緩存”,也就是開啟緩存,并再次訪問該網(wǎng)站,如圖5.22所示。5.5緩存模塊在第二次訪問時,客戶端并不是沒有向服務器端發(fā)送請求,而是發(fā)送了一個校對Etag標簽的請求,如圖5.23所示。5.5緩存模塊在HTTP頭部中有一項expires值,用于控制緩存存在的時間。expires可以控制頁面緩存,合理配置expires可以減少來自客戶端的請求,從而減小服務器端的壓力。epoch用于指定expires為1January,1970,00:00:01GMT;max用于指定expires為10年;?1用于指定expires的值為當前服務器時間?1s,即永遠過期;off表示不修改expires和Cache-Control的值。5.5緩存模塊為Nginx配置緩存模塊,在頁面配置文件中添加相關(guān)內(nèi)容。重啟Nginx服務之后,訪問兩次網(wǎng)站主頁,如圖5.24所示。5.6防盜鏈模塊在Nginx中,使用防盜鏈模塊可以防止盜鏈行為的發(fā)生。valid_referersnone表示沒有人可以引用,意為開啟防盜鏈;server_names表示可以引用的白名單;

Nginx默認沒有配置防盜鏈,需要用戶手動配置。5.6防盜鏈模塊通過示例演示防盜鏈的啟用方式。1.創(chuàng)建

網(wǎng)站主頁配置文件創(chuàng)建完成之后,開始創(chuàng)建頁面文件。將圖片上傳至/fd目錄下并授予其相應的權(quán)限。5.6防盜鏈模塊2.創(chuàng)建

網(wǎng)站主頁配置文件創(chuàng)建完成之后,開始創(chuàng)建頁面文件。5.6防盜鏈模塊3.訪問網(wǎng)站進行域名解析,如圖5.25所示。5.6防盜鏈模塊解析完成之后,分別訪問兩個網(wǎng)站,如圖5.26、圖5.27所示。5.6防盜鏈模塊4.查看日志網(wǎng)站的訪問日志很正常,沒有特殊變化。網(wǎng)站的訪問日志中比網(wǎng)站增加了引用的URL,這個URL正是的。5.6防盜鏈模塊5.開啟防盜鏈防盜鏈配置完成之后,重啟Nginx服務并訪問,如圖5.28所示。5.6防盜鏈模塊6.防盜鏈白名單在主頁配置文件中配置防盜鏈白名單。5.7連接狀態(tài)模塊訪問Nginx網(wǎng)站之后,查看Nginx程序狀態(tài)。對Nginx網(wǎng)站的連接狀態(tài)進行訪問,如圖5.29所示。5.7連接狀態(tài)模塊在主頁配置文件中添加連接狀態(tài)模塊配置。保存配置之后,重啟Nginx服務,并再次訪問連接狀態(tài)模塊,如圖5.30所示。5.7連接狀態(tài)模塊刷新頁面,觀察連接參數(shù),如圖5.31所示。5.31中,對Nginx進行了兩次訪問,處理了兩次請求,但只創(chuàng)建了一次連接。這說明,此時客戶端與服務器端保持了長連接,不需要再次創(chuàng)建連接。5.7連接狀態(tài)模塊在Nginx主配置文件中,調(diào)整長連接配置。間隔5秒刷新一次連接狀態(tài)模塊的訪問頁面,如圖5.32所示。5.7連接狀態(tài)模塊在5秒內(nèi)多次刷新頁面,觀察連接參數(shù),如圖5.33所示。第6章訪問限制與訪問控制訪問限制訪問控制訪問控制訪問限制了解訪問限制與訪問控制的概念了解訪問限制與訪問控制對網(wǎng)站安全的影響熟悉訪問限制與訪問控制的原理掌握訪問限制與訪問控制的啟動方法6.1訪問限制訪問限制是一種防止惡意訪問的常用手段,可以指定同一IP地址在固定時間內(nèi)的訪問次數(shù),或者指定同一IP地址在固定時間內(nèi)建立連接的次數(shù),若超過網(wǎng)站指定的次數(shù)訪問將不成功。如此一來,不僅可增加網(wǎng)站安全,還可減小Web服務器的壓力。6.1訪問限制1.啟動請求頻率限制(1)定義6.1.1

請求頻率限制limit_req_zone表示限制請求規(guī)則,其中zone也有空間的意思;$binary_remote_addr表示二進制形式的客戶端地址;req_zone表示規(guī)則名稱,為了便于引用,允許用戶自定義;10m表示存儲客戶端IP地址的空間大?。籸ate表示訪問頻率的限制范圍,1r/s表示1秒鐘一次。6.1訪問限制(2)引用限制規(guī)則定義完成之后,在主頁配置文件中直接引用即可。6.1.1

請求頻率限制6.1訪問限制6.1.1

請求頻率限制(3)訪問引用配置之后,創(chuàng)建頁面文件,并重啟Nginx服務,最后訪問該網(wǎng)站,如圖6.1所示。6.1訪問限制6.1.1

請求頻率限制直接訪問網(wǎng)站中的圖片,如圖6.2所示。6.1訪問限制6.1.1

請求頻率限制快速多次刷新頁面,如圖6.3所示。6.1訪問限制(4)優(yōu)化配置為了減少503狀態(tài)碼的出現(xiàn),可以在文件中配置請求延遲。6.1.1

請求頻率限制burst表示并發(fā)請求數(shù)量,即在請求限制規(guī)則中所配置的時間內(nèi)發(fā)起的請求數(shù)。并發(fā)請求數(shù)量一旦超過自定義的數(shù)量,也會出現(xiàn)503狀態(tài)碼。6.1訪問限制6.1.1

請求頻率限制保存配置并重啟Nginx服務,對訪問頁面進行多次快速刷新,觀察結(jié)果。在刷新的過程中,頁面通常會出現(xiàn)“加載中”狀態(tài),如圖6.4所示?!凹虞d中”狀態(tài)的原因并非網(wǎng)絡原因,而是服務器對請求進行了延遲操作。6.1訪問限制6.1.1

請求頻率限制更改請求限制的配置,取消請求延遲現(xiàn)象的發(fā)生。6.1訪問限制2.工具測試6.1.1

請求頻率限制ab表示該命令是針對ApacheBench的-n表示總訪問次數(shù)-c表示分幾次訪問6.1訪問限制6.1.1

請求頻率限制執(zhí)行命令之后,ApacheBench將通過終端顯示對網(wǎng)站訪問測試的結(jié)果,以及各項訪問參數(shù)。服務器端信息。訪問內(nèi)容信息。6.1訪問限制6.1.1

請求頻率限制ApacheBench的訪問結(jié)果信息。ConcurrencyLevel表示并發(fā)數(shù),由于訪問總次數(shù)是100次,分10次訪問,每次并發(fā)數(shù)為10。Timetakenfortests表示測試時間,也就是100次訪問所消耗的時間。Completerequests表示完成的請求總數(shù)。

Failedrequests表示失敗的請求總數(shù),此處失敗請求總數(shù)為99次6.1訪問限制3.觀察日志查看錯誤日志,了解請求限制對服務。6.1.1

請求頻率限制6.1訪問限制1.定義連接頻率限制需要進行定義。6.1.2連接頻率限制6.1訪問限制6.1.2連接頻率限制2.引用限制名稱與IP地址存儲空間定義完成之后,在主頁配置文件中直接引用即可。6.2訪問控制1.原理基于主機的訪問控制是指通過主機的信息,來判斷是否接受請求,該功能基于Nginx模塊——ngx_http_access_module。通常配置文件中會添加訪問白名單或訪問黑名單。若服務器收到來自白名單中IP地址的請求,則可以成功訪問網(wǎng)站。白名單與黑名單在配置文件中通常由allow與deny來表示,將指定的IP地址寫在參數(shù)后即可。6.2.1

基于主機6.2訪問控制2.配置在主頁配置文件中添加基于主機的訪問控制。6.2.1

基于主機6.2訪問控制通過本機瀏覽器訪問網(wǎng)站,如圖6.6所示。6.2.1

基于主機6.2訪問控制3

對剛剛的訪問控制配置進行更改。6.2.1

基于主機上述示例中,將兩條配置調(diào)換了順序,如此一來,無論是誰都無法訪問到網(wǎng)站。因為系統(tǒng)對文件的讀取是有順序的,所以優(yōu)先讀取的信息將被優(yōu)先執(zhí)行。由于這兩條配置具有矛盾性,所以此時allow無法被執(zhí)行。6.2訪問控制3.再次更改配置。6.2.1

基于主機上述示例中,將本地IP地址配置為否認IP地址,將其他所有IP地址配置為允許IP地址。再次訪問時,本機將無法訪問,而其他計算機可以正常訪問。6.2訪問控制4.更改配置文件創(chuàng)建兩個網(wǎng)站。6.2.1

基于主機6.2訪問控制在Nginx主配置文件中添加基于主機的訪問控制配置6.2.1

基于主機6.2訪問控制通過本機訪問網(wǎng)站,如圖6.7、圖6.8所示。6.2.1

基于主機6.2訪問控制1.原理基于用戶的訪問控制是指通過用戶的信息,來判斷是否接受請求,該功能基于Nginx模塊——ngx_http_auth_basic_module。6.2.2 基于用戶6.2訪問控制2.創(chuàng)建認證文件演示基于用戶訪問控制的啟用方式。創(chuàng)建兩個用戶并設置密碼。6.2.2 基于用戶6.2訪問控制3.啟動認證在主頁配置文件中啟動用戶認證,并調(diào)用密碼文件中的信息。6.2.2 基于用戶6.2訪問控制保存好配置之后,重啟Nginx服務,并對網(wǎng)站進行訪問,如圖6.9所示。6.2.2 基于用戶6.2訪問控制填寫之前密碼文件中的賬戶與密碼即可成功訪問該網(wǎng)站,如圖6.10所示。6.2.2 基于用戶6.2訪問控制6.2.2 基于用戶訪問網(wǎng)站之后,在終端查看訪問日志。第7章反向代理代理原理代理配置代理緩存郵箱代理服務器代理配置代理原理代理緩存郵箱代理服務器了解

反向代理與正向代理的原理掌握Nginx代理緩存的原理與配置熟悉

Nginx反向代理的配置7.1代理原理代理器是外網(wǎng)與內(nèi)網(wǎng)之間的橋梁,可以代理客戶端訪問服務器端,也可以代理服務器端響應客戶端。代理器分為正向代理與反向代理。7.1代理原理正向代理是處于客戶端與服務器端之間的代理節(jié)點,客戶端將請求發(fā)送給正向代理,正向代理再向服務器端進行請求,最終正向代理將響應返回給客戶端,作用是代理內(nèi)網(wǎng)客戶端訪問外網(wǎng),并使外網(wǎng)服務器端對客戶端不可見,如圖7.1所示。7.1代理原理反向代理是服務于服務器端的代理節(jié)點。客戶端的請求不會直接發(fā)送給服務器端,而是先由反向代理服務器接收,再由反向代理服務器發(fā)送給服務器端,如圖7.2所示。7.1代理原理將通過域名解析工具查看域名的IP地址,觀察服務器端域名所綁定的IP地址。7.1代理原理訪問兩個反向代理服務器IP地址,如圖7.3所示。7.2代理配置Nginx的反向代理功能基于它的代理模塊(ngx_http_proxy_module)實現(xiàn)。1.代理配置7.2.1

代理語法2.真實IP地址配置7.2代理配置3.緩沖區(qū)配置7.2.1

代理語法4.超時配置7.2代理配置1.啟動網(wǎng)站配置反向代理示例服務器信息,如表7.1所示。7.2.2 配置示例7.2代理配置7.2.2 配置示例在第一臺服務器中創(chuàng)建一個網(wǎng)站。7.2代理配置2.啟動代理反向代理的配置可以寫在主頁配置文件中,也可以寫在主配置文件中。此處以主頁配置文件為例。7.2.2 配置示例7.2代理配置參數(shù)詳解。proxy_pass表示真實服務器的IP地址,也就是Web服務器的IP地址;proxy_set_headerHost$http_host表示重新定義轉(zhuǎn)發(fā)給Web服務器的請求頭部,即在請求頭部添加客戶端的真實IP地址;proxy_set_headerX-Real-IP$remote_addr表示記錄客戶端的真實IP地址;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for表示記錄服務器端反向代理服務器的IP地址;proxy_connect_timeout表示反向代理服務器對Web服務器發(fā)起TCP三次握手的連接超時時間;7.2.2 配置示例7.2代理配置proxy

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論