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頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1.5習題

1.填空題

(1)Web

(2)輕量級

(3)讀取

(4)寫入

(5)異步、非阻塞

2.選擇題

(DD

(2)A

(3)B

(4)A

(5)B

3.思考題

(1)

單個線程通過監(jiān)控每個I/O流,以類似撥開關的方式去管理多個會話。其實就是在請求

等待數(shù)據(jù)庫處理時,線程又去處理其他會話請求,當之前的請求返回,線程又回去繼續(xù)處理

之前的請求。

(2)

主線版是最新發(fā)布的版本,也就是說它的新bug還沒有被發(fā)現(xiàn),目前很少有人人知道它

的穩(wěn)定性如何。如果在生產環(huán)境中使用主線版很有可能出現(xiàn)新bug,為網站維護增加了難度,

還對企業(yè)線上業(yè)務造成了不必要的損失。舊版本雖然相對主線版更加穩(wěn)定,但性能方面比穩(wěn)

定的版本差。所以在企業(yè)中通常都選擇使用穩(wěn)定的版本,而主線版通常在測試環(huán)境中進行試

驗。

4.實操題

2.5習題

1.填空題

(1)無狀態(tài)

(2)資源

(3)URI

(4)URLURN

(5)報文

2.選擇題

(DA

(2)A

(3)D

(4)B

(5)C

3.思考題

(1)

TCP是面向連接的,首先要創(chuàng)建連接,在創(chuàng)建連接的過程中客戶端與服務端要進行三次

交互,而這三次交互被生動形象地叫做三次握手。

首先,服務端創(chuàng)建傳輸控制塊(TCB),并進入到監(jiān)聽(LISTEN)狀態(tài),隨時可以與客

戶端進行連接??蛻舳艘残枰獎?chuàng)建傳輸控制塊,接著向服務端發(fā)送請求連接的報文,這是第

?次握手。其中,報文包括:頭部SYN-1與序列號seq-x。由于這是個SYN報文,所以

不會傳輸數(shù)據(jù),但要消耗掉一個序列號,發(fā)送之后客戶端進入同步已發(fā)送(SYN-SENT)狀

態(tài)。服務端收到請求連接的報文后,再向客戶端發(fā)送確認報文,這是第二次握手。其中,報

文中內容為ACK=1,SYN=1,返回序列號是ack=x+l,以及報文序列號seq=y,之后服務端

進入同步收到(SYN-RCVD)狀態(tài)。由于這個報文中也含有SYN,所以同樣不能傳輸數(shù)據(jù),

但仍要消耗序列號??蛻舳耸盏酱_認報文后,同樣要給服務端發(fā)送確認報文,這是第三次握

手。其中,報文頭部是ACK=1,返回序列號是ack=y+l,并加入該報文的序列號seq=x+l,

之后客戶端進入已建立連接(ESTABLISHED)狀態(tài)。這次的報文中不含有SYN,所以可以

傳輸數(shù)據(jù),如果不傳輸數(shù)據(jù)就不需要消耗序列號了。在服務端收到來自客戶端的確認報文后,

也進入已建立連接(ESTABLISHED)狀態(tài),此時,TPC連接建立完成。

(2)

在客戶端斷開TCP連接的時候,需要與服務端進行四次交互,這四次交互就叫做四次

揮手。

首先,客戶端向服務端發(fā)送釋放連接報文,同時停止數(shù)據(jù)傳輸。釋放連接報文頭部是

FIN=1,序列號是seq=u。發(fā)送之后,客戶端進入終止等待1(FIN-WAITJ)狀態(tài)。無論FIN

報文有沒有傳輸數(shù)據(jù),都需要消耗一個序列號。服務端收到釋放連接報文之后,再向客戶端

發(fā)送確認報文,報文內容為ACK=1,返回序列號是ack=u+l,報文本身的序列號是seq=v。

這條報文發(fā)送之后,服務端就會進入關閉等待(CLOSE-WAIT)狀態(tài)c這時,客戶端已經不

再發(fā)送數(shù)據(jù),但仍可以接收數(shù)據(jù),而服務端仍可以向客戶端發(fā)送數(shù)據(jù),這個狀態(tài)叫做半關閉

狀態(tài)。這個狀態(tài)會持續(xù)一段時間,直到服務端將所有數(shù)據(jù)發(fā)送完畢??蛻舳耸盏椒斩说拇_

認報文后,就會進入終止等待2(FIN-WAIT-2)狀態(tài),同時接收數(shù)據(jù)并等待服務端發(fā)送釋放

連接報文。服務端將數(shù)據(jù)發(fā)送完之后,接著向客戶端發(fā)送釋放連接報文。報文內容為FIN=1,

序列號為ack=u+l,而在之前的半關閉狀態(tài)服務端可能發(fā)送了數(shù)據(jù),并消耗了序列號,這里

假設序列號為seq=wo將這條報文發(fā)送之后,服務端就會進入最后確認(LAST-ACK)狀態(tài),

并等待客戶端發(fā)送確認報文。客戶端收到釋放連接報文后,再向服務端發(fā)送確認報文。報文

內容為ACK=1,返回序列號為ack二w+1,以及這個報文的序列號seq=u+1。發(fā)送之后,客戶

端將進入時間等待(TIME-WAIT)狀態(tài)。這時,四次揮手已經結束,但TCP連接仍然沒有

釋放。客戶端需要經過最長報文段壽命(MSL)的時間,這個時間通常為兩分鐘,將傳輸控

制塊撤銷后,才進入關閉(CLOSED)狀態(tài)。而服務端結束TCP連接要更早一些,它一收到

確認報文,就立即撤銷傳輸控制塊并進入關閉狀態(tài)。

4.實操題

3.6習題

1.填空題

(1)PID

(2)模塊

(3)核心模塊(CorcModule)、事件驅動模塊(EventsModule)、HTTP內核模塊

(HttpCoreModule)

(4).conf

(5)域名、端口、IP地址

2.選擇題

(DD

(2)A

(3)B

(4)A

(5)B

3.思考題

(1)

如果將軟件的所有配置都寫入到同一個配置文件中,就會導致文件過大,系統(tǒng)讀取的速

率會變慢,對軟件的運行會造成阻礙。通常軟件的配置文件都是分成不同的部分,每一部分

都叫做子配置文件

(2)

listen表示監(jiān)聽,通常后面是端口號,代表服務運行的端口。

servejname表示服務名,也叫主機名,其實是指網站域名。

Location]}中的內容是Nginx作為Web服務器的網頁文件信息。

root在系統(tǒng)中是超級用戶的意思,在這里表示網站網頁主目錄。

index在這里表示默認頁面,后面是存放默認頁面的路徑。

4.實操題

4.5習題

1.填空題

(1)訪問日志

(2)錯誤日志

(3)讀取讀取寫入

(4)log_format

(5)PVUV

2.選擇題

(1)A

(2)C

(3)A

(4)D

(5)D

3.思考題

(1)

$remote_addr按照字面理解為遠程地址的意思,實際上這里記錄的是客戶端的IP地址。

$remote_addr是遠程用戶的意思,即客戶端的用戶名」$time_local]代表本地時間,簡單理解

為服務器的時間,不同時區(qū)的服務器時間的是不同的。$requesl是請求,記錄了用戶所使用

的協(xié)議版本與動作,還有所需要請求的URL.$status表示請求結果,即狀態(tài)返回碼。

$body_bytcs_scnt表示服務端發(fā)送給客戶端內容的字節(jié)數(shù),并不包括響應頭。$http_rcfcrcr表

示引用,一般情況下網站訪問是不需要被引用的。

(2)

日志輪轉分為兩步:第一步,將舊日志文件的文件名稱進行修改,此時Nginx的口志仍

在舊文件中寫入,第二步,向Nginx主進程發(fā)送USR1信號,Nginx收到信號后將會以創(chuàng)建

新日志文件,并以Nginx進程的屬主作為新日志文件的屬主。此時Nginx將會把日志寫入到

新日志文件中,并可以對舊日志文件進行切割。

4.實操題

5.9習題

1.填空題

(1)微調更新

(2)sendfiletcp_nopushtcp_nodelay

(3)變量

(4)內存

(5)監(jiān)聽

2.選擇題

(DB

(2)C

(3)B

(4)A

(5)B

3.思考題

(1)

ngx_http_core_module表示文件讀取模塊,而這只是一個總稱。其實文件讀取模塊具體

分為三個模塊,分別是:sendfile、tcp_nopush與tcp_nodelay。

sendfile表示文件發(fā)送,是用于管理文件發(fā)送的模塊。在傳統(tǒng)的文件發(fā)送給方式中,文

件需要進行多次拷貝,才能夠進行發(fā)送。sendfile不會將文件拷貝到用戶空間,而是直接從

內核空間的緩存區(qū)拷貝到另個與套接字相關聯(lián)的緩存區(qū),從而省去了許多拷貝步驟,同時

提高了文件發(fā)送的效率。

tcp_nopush是負責管理流量發(fā)送的模塊,在sendfile的基礎上為Nginx提供了更高效的

發(fā)送方式。tcp_nopush如同是連接路勁中的一個開關,在流量積攢到一定量時,開關打開發(fā)

送流量,當一個數(shù)據(jù)包發(fā)送完成之后又關閉開關。從而減少了數(shù)據(jù)包的過載,同時也減輕了

網絡的壓力。

tcp_nodelay同樣是負責管理流量發(fā)送的模塊,但與tcp_nopush不同,tcp_nodelay允許

Nginx即時發(fā)送數(shù)據(jù)。lepjodelay存在的目的就是為了減緩網絡延遲,提升用戶工作效率,

只要服務器一產生數(shù)據(jù)就會打包發(fā)送。

在不開啟緩存的情況下,無論每次的請求是否相同,每請求一次都會從服務端重新調用

資源。開啟緩存之后,在多次請求相同的情況下,客戶端不會向服務端發(fā)送新的請求,而是

直接從本地緩存中調用資源呈現(xiàn)給用戶,從而加速用戶瀏覽。

4.實操題

6.4習題

1.填空題

(1)惡意訪問

(2)請求頻率

(3)連接頻率

(4)主機

(5)用戶

2.選擇題

⑴D

(2)D

(3)A

(4)A

(5)C

3.思考題

(1)

訪問限制是一種防止惡意訪問的常用手段,可以指定同一IP地址在固定時間內的訪問

次數(shù),或者指定同一IP在固定時間內建立連接的次數(shù),若是超過網站指定的次數(shù)訪問將不

成功。

訪問控制是控制客戶端對服務端的訪問,并非僅限制請求次數(shù),而是允許某些請求或者

直接拒絕某些請求。

(2)

limit_req_zone表示限制請求規(guī)則,其中zone也有空間的意思;

$binary_remote_addr表示二進制形式的客戶端地址;

req_zone表示規(guī)則名稱,為了便于引用,允許用戶自定義;

10m表示儲存客戶端IP地址的空間大??;

rate表示訪問頻率的限制范圍,lr/s表示I秒鐘一次。

4.實操題

7.6習題

1.填空題

(1)代理器(Proxy)

(2)正向代理器

(3)反向代理

(4)隱藏

(5)反向代理

2.選擇題

(DB

(2)B

(3)A

(4)A

(5)C

3.思考題

(1)

正向代理是處于客戶端與服務端之間的代理節(jié)點,客戶端將請求發(fā)送給正向代理,正向

代理再向服務端進行請求,最終正向代理將響應返回給客戶端。

反向代理同樣是處于客戶端與服務端之間的代理節(jié)點,與正向代理不同的是,反向代理

是服務于客戶端的代理節(jié)點。客戶端的請求不會直接發(fā)送給服務端,而是先由反向代理服務

器接收,再由反向代理服務器發(fā)送給服務端。

(2)

proxy_pass表示真實服務器的IP地址,也就是Web服務器的IP地址。

proxy_set_headerHost$http_host表示重新定義轉發(fā)給后端Web服務器的請求頭部,即

在請求頭部添加客戶端真實IP地址。

proxy_set_headerX-Real-IP$r3mote_addr表示記錄客戶端真實IP池址。

proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for表示記錄服務端反向代

理服務器的IP地址。

proxy_connect_limeout表示反向代理服務器對后端服務器發(fā)起TCP三次握手的連接超

時時間。

proxy_send_timeout表示后端服務器給反向代理服務器返回資源過程中的超時時間。

proxy_read_timeout表示TCP長連接的超時時間。

proxy_buffering表示開啟緩沖功能。

proxy_buffer_size表示存放響應頭部的緩沖區(qū)。

proxy_buffers表示內容線沖區(qū)大小。

proxy_busy_buffers_size表示用于向客戶端發(fā)送資源的緩沖區(qū),反向代理服務器會劃分

出一部分用于發(fā)送資源的緩沖區(qū)。

proxy_max_temp_file_size表示用于儲存請求頭部文件的緩沖區(qū),反向代理服務器會將

超大的請求頭部在緩沖區(qū)內儲存成文件。

4.實操題

8.4習題

1.填空題

(1)中間件數(shù)據(jù)庫

(2)交互

(3)硬件軟件

(4)IDC機房網絡帶寬服務器劃分

(5)數(shù)據(jù)庫

2.選擇題

(DB

(2)D

(3)A

(4)A

(5)D

3.思考題

(1)

網站組件是指構成網站架構的各個部分,包括硬件與軟件兩個方面。硬件指服務器、網

線等基礎物理設施,軟件指Web服務、數(shù)據(jù)庫等應用。

龐大的數(shù)據(jù)庫系統(tǒng)不僅提高了數(shù)據(jù)的存儲能力,還為數(shù)據(jù)的運算提供了有力的支持,使

人們的上網體驗度得到良好的提升。數(shù)據(jù)庫中的數(shù)據(jù)按一定的數(shù)學模型組織、描述和存儲,

具有極小的冗余,較高的數(shù)據(jù)獨立性和易擴展性,并可為各種用戶共享。常見的有Oracle.

MongoDB、MySQL等。

中間件是介于系統(tǒng)軟件與應用軟件之間,為兩者提供資源共享、合作互通的的接口,同

時能夠為應用程序提供服務的軟件,是一類軟件的總稱。常見的有PHP、Python,Java等。

(2)

Linux+Apache+Python+Mysql是以Linux作為操作系統(tǒng),Apache作為Web服務,Python

作為中間件,Mysql做數(shù)據(jù)庫的網站架構。該架構簡稱LAMP,其中,“P”可以是Python、

PHP等。所以LAMP不是指一種架構,而是指一類架構的統(tǒng)稱。

Linux+Tomcai+JDK+Oracle是以Linux作為操作系統(tǒng),Tomcat作為Web服務,JDK作

為中間件,Oracle作為數(shù)據(jù)庫的網站架構。其中,Tomcat與Apache同屬于Apache基金會。

Tomcat同樣是一款優(yōu)秀的Web服務,專注于處理動態(tài)請求,甚至在處理動態(tài)請求時比Apache

更加擅長。同時,Tomcat也是Java中間件的容器,能夠很好地支持Java程序在網站中運行。

Windows+IIS+ASP.NET+Mogodb是以Windows作為操作系統(tǒng),HS作為Web服務,

ASP.NET作為中間件,Mogodb作為數(shù)據(jù)庫的網站架構。其中,HS(InternetInformationServices)

又稱互聯(lián)網信息服務,是由微軟公司提供的一款Web服務,并且只基于Windows系統(tǒng)運行。

Linux+Nginx+PHP+Mysql是以Linux作為操作系統(tǒng),Nginx作為Web服務,PHP作為

中間件,Mysql作為數(shù)據(jù)庫的網站架構。

4.實操題

9.5習題

1.填空題

(1)FastCGI

(2)ngx_fastcgi_modul

(3)核心

(4)PHP-FPM自身

(5)alerl(必須立即處理)error(錯誤情況)warning(警告情況)notice

(一般重要信息)debug(調試信息)notice(默認)

2.選擇題

(DB

(2)A

(3)B

(4)D

(5)A

3.思考題

(1)

PHP作為動態(tài)網站的中間件之后,為動態(tài)網站的交互提供了更加優(yōu)秀的CGL即FastCGh

傳統(tǒng)的CGI工作方式是每當一個請求需要CGI進行處理時,Web服務就通過操作系統(tǒng)

調用CGI創(chuàng)建一個進程。當請求處理完成后,就退出該進行,一個請求對應一個進程。當遇

到高并發(fā)時,CGI就處于個不斷創(chuàng)建進程的狀態(tài),工作效率低下,容易造成服務器響應延

遲。

FastCGI作為CGI的改良版,解決了CGI工作性能上的問題。FastCGI通過一個進程管

理器,管理進程池中的進程,減輕了創(chuàng)建進程的壓力,提高了工作效率。目前FastCGI已經

被廣泛應用,而PHP-FPM就是PHP的FastCGI進程管理器。

FastCGI為Nginx的ngx_fastcgi_modul模塊與數(shù)據(jù)庫提供了更加穩(wěn)定、可靠的接口。

(2)

表示精確匹配,優(yōu)先級也是最高的。

表示區(qū)分大小寫的正則匹配。

表示不區(qū)分大小寫的正則匹配。

“/”表示通用匹配,任何請求都會匹配到。

“八~”表示以某些字符串開頭。

表示非區(qū)分大小寫匹配的正則。

表示非不區(qū)分大小寫匹配的正則。

4.實操題

10.4習題

1.填空題

(1)偽靜態(tài)化

(2)靜態(tài)

(3)安全性

(4)if語句條件判斷全局變量

(5)地址

2.選擇題

⑴D

(2)C

(3)B

(4)B

(5)D

3.思考題

(1)

理論上,搜索引擎更歡迎靜態(tài)頁面形式的網頁,搜索引擎對靜態(tài)頁面的評分一般要高于

動態(tài)頁面。所以,URL重寫可以讓網站的網頁更容易被搜索引擎所收錄。

從安全角度上講,如果在URL中暴露太多的參數(shù),無疑會造成一定量的信息泄漏,可

能會被一些黑客利用,對系統(tǒng)造成一定的破壞,所以靜態(tài)化的URL地址可以帶來更高的安

全性。

(2)

last標記表示終止當前的頁面匹配,客戶端重新發(fā)送一個請求并按照下一條規(guī)則進行匹

配。

break標記表示本條規(guī)則匹配完成后終止匹配,不再匹配后面的規(guī)則。

last標記與break標記都將終止當前匹配,但last標記回重新發(fā)送請求進行匹配,而break

標記將徹底終止匹配。

redirect標記表示返回302臨時重定向,瀏覽器地址會顯示跳轉后的URL地址。

permanent標記表示返回301永久重定向,瀏覽器地址會顯示跳轉后URL地址。

redirect標記與permanent標記的區(qū)別是返回的不同方式的重定向,對于客戶端來說一

般狀態(tài)下是沒有區(qū)別的,而對于搜索引擎,相對來說更喜歡301重定向。

4.實操題

11.4習題

1.填空題

(1)證書頒發(fā)機構(CA?CertificateAuthority)

(2)合法性可靠性

(3)信任列表

(4)根子

(5)mod_ssl證書密鑰

2.選擇題

(DB

(2)D

(3)A

(4)A

(5)B

3.思考題

(1)

1.私有CA證書更容易被偽造,被欺詐網站所利用,而公有證書擁有其獨特的數(shù)字簽

名,不容易被偽造:

2.瀏覽器會攔截使用私有CA證書的網站,需要用戶手動認可,所以私有CA更容易

收到中間人攻擊;

3.目前私有CA證書只能支持SSLV2.0協(xié)議,而目前公有證書已經在支持更高版本的

協(xié)議;

4.私有CA證書沒有吊銷列表,在證書丟失或被盜時,無法吊銷證書,有可能被他人

利用;

5.CA證書普遍都比公有CA證書有效期更長,而CA證書的有效期越長越容易被黑客

破解。

(2)

當需要將正在運行中的Nginx升級,添加或刪除服務模塊時,可以在不中斷服務的情況

下,使用新版本,重新編譯的Nginx可執(zhí)行程序替換舊版本的可執(zhí)行程序,步驟如下:

1.使用新的可執(zhí)行程序替換舊的可執(zhí)行程序,對于編譯安裝的Nginx,可以將新版本

編譯安裝到舊版本的Nginx安裝路徑中。替換之前,最好備份一下舊的可執(zhí)行程序;

2.發(fā)送指令kill-USR2到舊版木的Nginx主進程號,啟動新版木Nginx的進程:

3.此時,新舊版本的Nginx近程會同時運行,共同處理請求,要逐步停止舊版本的Nginx

進程,就必須發(fā)送WINCH信號給舊版本Nginx的主進程,然后,舊版本Nginx的工作進程

就將開始平滑關閉;

4.一段時間后,舊版本Nginx的工作進程處理了所有已連接的請求后退出,僅由新版

本Nginx的工作進程來處理輸入的請求;

5.如果此時需要版本退回,就必需向舊版本Nginx的主進程發(fā)送kill-HUP指令。舊版

本Nginx將在不重教配置文件情況下啟動它的工作進程,再向新版本Nginx主進程發(fā)送關

閉指令,即可實現(xiàn)版本退回;

6.如果不需要版本退回,則向舊版本Nginx的主進程發(fā)送關閉指令,即可徹底關閉舊

版本Nginxo

4.實操題

12.5習題

1.填空題

(1)吞吐

(2)二層負載三層負載四層負載七層負載

(3)LVSHAproxyNginx

(4)負載均衡器

(5)網絡層傳輸層

2.選擇題

(DB

(2)D

(3)A

(4)A

(5)A

3.思考題

(1)

四層負載均衡是在網絡層和傳輸層(IP地址與端口)通過修改目標地址進行負載均衡。四

層負載在響應請求時速度較快,但無法處理更高級的請求。

七層負載均衡是通過虛機主機名或者URL接收請求,再根據(jù)一些規(guī)則分配到真實的服

務器。七層負載均衡可以代理任意修改和處理用戶的請求,所以可以使整個應用更加智能化

和安全,代價就是設計和配置會更復雜。

(2)

1.輪詢算法(RoundRobin,簡稱RR)

輪詢算法是負載均衡分發(fā)流量的默認算法。負載均衡調度器通過輪詢調度算法將外部請

求按順序輪流分配到集群中的真實服務器上,它均等地對待每一臺服務器,而不管服務器上

實際的連接數(shù)和系統(tǒng)負載。

2.加權輪詢算法(WeightRoundRobin,簡稱WRR)

負載均衡調度器可以通過weight指定輪詢的權重,權重(比例)越大,被調度的次數(shù)越

多。

3.IP_hash算法

負載均衡調度器根據(jù)每個請求IP進行調度,可以解決會話的問題,且不能使用weighto

即負載均衡調度器會將同一個客戶端IP,發(fā)給同一個Web服務器。

4.fair公平算法

fair公平算法是Nginx借助第三方插件實現(xiàn)的調度

溫馨提示

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

評論

0/150

提交評論