Nginx高性能Web服务器应用与实战-习题答案_第1页
Nginx高性能Web服务器应用与实战-习题答案_第2页
Nginx高性能Web服务器应用与实战-习题答案_第3页
Nginx高性能Web服务器应用与实战-习题答案_第4页
Nginx高性能Web服务器应用与实战-习题答案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.5习题

1.填空题

(1)Web

(2)轻量级

(3)读取

(4)写入

(5)异步、非阻塞

2.选择题

(DD

(2)A

(3)B

(4)A

(5)B

3.思考题

(1)

单个线程通过监控每个I/O流,以类似拨开关的方式去管理多个会话。其实就是在请求

等待数据库处理时,线程又去处理其他会话请求,当之前的请求返回,线程又回去继续处理

之前的请求。

(2)

主线版是最新发布的版本,也就是说它的新bug还没有被发现,目前很少有人人知道它

的稳定性如何。如果在生产环境中使用主线版很有可能出现新bug,为网站维护增加了难度,

还对企业线上业务造成了不必要的损失。旧版本虽然相对主线版更加稳定,但性能方面比稳

定的版本差。所以在企业中通常都选择使用稳定的版本,而主线版通常在测试环境中进行试

验。

4.实操题

2.5习题

1.填空题

(1)无状态

(2)资源

(3)URI

(4)URLURN

(5)报文

2.选择题

(DA

(2)A

(3)D

(4)B

(5)C

3.思考题

(1)

TCP是面向连接的,首先要创建连接,在创建连接的过程中客户端与服务端要进行三次

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

首先,服务端创建传输控制块(TCB),并进入到监听(LISTEN)状态,随时可以与客

户端进行连接。客户端也需要创建传输控制块,接着向服务端发送请求连接的报文,这是第

•次握手。其中,报文包括:头部SYN-1与序列号seq-x。由于这是个SYN报文,所以

不会传输数据,但要消耗掉一个序列号,发送之后客户端进入同步已发送(SYN-SENT)状

态。服务端收到请求连接的报文后,再向客户端发送确认报文,这是第二次握手。其中,报

文中内容为ACK=1,SYN=1,返回序列号是ack=x+l,以及报文序列号seq=y,之后服务端

进入同步收到(SYN-RCVD)状态。由于这个报文中也含有SYN,所以同样不能传输数据,

但仍要消耗序列号。客户端收到确认报文后,同样要给服务端发送确认报文,这是第三次握

手。其中,报文头部是ACK=1,返回序列号是ack=y+l,并加入该报文的序列号seq=x+l,

之后客户端进入已建立连接(ESTABLISHED)状态。这次的报文中不含有SYN,所以可以

传输数据,如果不传输数据就不需要消耗序列号了。在服务端收到来自客户端的确认报文后,

也进入已建立连接(ESTABLISHED)状态,此时,TPC连接建立完成。

(2)

在客户端断开TCP连接的时候,需要与服务端进行四次交互,这四次交互就叫做四次

挥手。

首先,客户端向服务端发送释放连接报文,同时停止数据传输。释放连接报文头部是

FIN=1,序列号是seq=u。发送之后,客户端进入终止等待1(FIN-WAITJ)状态。无论FIN

报文有没有传输数据,都需要消耗一个序列号。服务端收到释放连接报文之后,再向客户端

发送确认报文,报文内容为ACK=1,返回序列号是ack=u+l,报文本身的序列号是seq=v。

这条报文发送之后,服务端就会进入关闭等待(CLOSE-WAIT)状态c这时,客户端已经不

再发送数据,但仍可以接收数据,而服务端仍可以向客户端发送数据,这个状态叫做半关闭

状态。这个状态会持续一段时间,直到服务端将所有数据发送完毕。客户端收到服务端的确

认报文后,就会进入终止等待2(FIN-WAIT-2)状态,同时接收数据并等待服务端发送释放

连接报文。服务端将数据发送完之后,接着向客户端发送释放连接报文。报文内容为FIN=1,

序列号为ack=u+l,而在之前的半关闭状态服务端可能发送了数据,并消耗了序列号,这里

假设序列号为seq=wo将这条报文发送之后,服务端就会进入最后确认(LAST-ACK)状态,

并等待客户端发送确认报文。客户端收到释放连接报文后,再向服务端发送确认报文。报文

内容为ACK=1,返回序列号为ack二w+1,以及这个报文的序列号seq=u+1。发送之后,客户

端将进入时间等待(TIME-WAIT)状态。这时,四次挥手已经结束,但TCP连接仍然没有

释放。客户端需要经过最长报文段寿命(MSL)的时间,这个时间通常为两分钟,将传输控

制块撤销后,才进入关闭(CLOSED)状态。而服务端结束TCP连接要更早一些,它一收到

确认报文,就立即撤销传输控制块并进入关闭状态。

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)

如果将软件的所有配置都写入到同一个配置文件中,就会导致文件过大,系统读取的速

率会变慢,对软件的运行会造成阻碍。通常软件的配置文件都是分成不同的部分,每一部分

都叫做子配置文件

(2)

listen表示监听,通常后面是端口号,代表服务运行的端口。

servejname表示服务名,也叫主机名,其实是指网站域名。

Location]}中的内容是Nginx作为Web服务器的网页文件信息。

root在系统中是超级用户的意思,在这里表示网站网页主目录。

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]代表本地时间,简单理解

为服务器的时间,不同时区的服务器时间的是不同的。$requesl是请求,记录了用户所使用

的协议版本与动作,还有所需要请求的URL.$status表示请求结果,即状态返回码。

$body_bytcs_scnt表示服务端发送给客户端内容的字节数,并不包括响应头。$http_rcfcrcr表

示引用,一般情况下网站访问是不需要被引用的。

(2)

日志轮转分为两步:第一步,将旧日志文件的文件名称进行修改,此时Nginx的口志仍

在旧文件中写入,第二步,向Nginx主进程发送USR1信号,Nginx收到信号后将会以创建

新日志文件,并以Nginx进程的属主作为新日志文件的属主。此时Nginx将会把日志写入到

新日志文件中,并可以对旧日志文件进行切割。

4.实操题

5.9习题

1.填空题

(1)微调更新

(2)sendfiletcp_nopushtcp_nodelay

(3)变量

(4)内存

(5)监听

2.选择题

(DB

(2)C

(3)B

(4)A

(5)B

3.思考题

(1)

ngx_http_core_module表示文件读取模块,而这只是一个总称。其实文件读取模块具体

分为三个模块,分别是:sendfile、tcp_nopush与tcp_nodelay。

sendfile表示文件发送,是用于管理文件发送的模块。在传统的文件发送给方式中,文

件需要进行多次拷贝,才能够进行发送。sendfile不会将文件拷贝到用户空间,而是直接从

内核空间的缓存区拷贝到另个与套接字相关联的缓存区,从而省去了许多拷贝步骤,同时

提高了文件发送的效率。

tcp_nopush是负责管理流量发送的模块,在sendfile的基础上为Nginx提供了更高效的

发送方式。tcp_nopush如同是连接路劲中的一个开关,在流量积攒到一定量时,开关打开发

送流量,当一个数据包发送完成之后又关闭开关。从而减少了数据包的过载,同时也减轻了

网络的压力。

tcp_nodelay同样是负责管理流量发送的模块,但与tcp_nopush不同,tcp_nodelay允许

Nginx即时发送数据。lepjodelay存在的目的就是为了减缓网络延迟,提升用户工作效率,

只要服务器一产生数据就会打包发送。

在不开启缓存的情况下,无论每次的请求是否相同,每请求一次都会从服务端重新调用

资源。开启缓存之后,在多次请求相同的情况下,客户端不会向服务端发送新的请求,而是

直接从本地缓存中调用资源呈现给用户,从而加速用户浏览。

4.实操题

6.4习题

1.填空题

(1)恶意访问

(2)请求频率

(3)连接频率

(4)主机

(5)用户

2.选择题

⑴D

(2)D

(3)A

(4)A

(5)C

3.思考题

(1)

访问限制是一种防止恶意访问的常用手段,可以指定同一IP地址在固定时间内的访问

次数,或者指定同一IP在固定时间内建立连接的次数,若是超过网站指定的次数访问将不

成功。

访问控制是控制客户端对服务端的访问,并非仅限制请求次数,而是允许某些请求或者

直接拒绝某些请求。

(2)

limit_req_zone表示限制请求规则,其中zone也有空间的意思;

$binary_remote_addr表示二进制形式的客户端地址;

req_zone表示规则名称,为了便于引用,允许用户自定义;

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)

正向代理是处于客户端与服务端之间的代理节点,客户端将请求发送给正向代理,正向

代理再向服务端进行请求,最终正向代理将响应返回给客户端。

反向代理同样是处于客户端与服务端之间的代理节点,与正向代理不同的是,反向代理

是服务于客户端的代理节点。客户端的请求不会直接发送给服务端,而是先由反向代理服务

器接收,再由反向代理服务器发送给服务端。

(2)

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

proxy_set_headerHost$http_host表示重新定义转发给后端Web服务器的请求头部,即

在请求头部添加客户端真实IP地址。

proxy_set_headerX-Real-IP$r3mote_addr表示记录客户端真实IP池址。

proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for表示记录服务端反向代

理服务器的IP地址。

proxy_connect_limeout表示反向代理服务器对后端服务器发起TCP三次握手的连接超

时时间。

proxy_send_timeout表示后端服务器给反向代理服务器返回资源过程中的超时时间。

proxy_read_timeout表示TCP长连接的超时时间。

proxy_buffering表示开启缓冲功能。

proxy_buffer_size表示存放响应头部的缓冲区。

proxy_buffers表示内容线冲区大小。

proxy_busy_buffers_size表示用于向客户端发送资源的缓冲区,反向代理服务器会划分

出一部分用于发送资源的缓冲区。

proxy_max_temp_file_size表示用于储存请求头部文件的缓冲区,反向代理服务器会将

超大的请求头部在缓冲区内储存成文件。

4.实操题

8.4习题

1.填空题

(1)中间件数据库

(2)交互

(3)硬件软件

(4)IDC机房网络带宽服务器划分

(5)数据库

2.选择题

(DB

(2)D

(3)A

(4)A

(5)D

3.思考题

(1)

网站组件是指构成网站架构的各个部分,包括硬件与软件两个方面。硬件指服务器、网

线等基础物理设施,软件指Web服务、数据库等应用。

庞大的数据库系统不仅提高了数据的存储能力,还为数据的运算提供了有力的支持,使

人们的上网体验度得到良好的提升。数据库中的数据按一定的数学模型组织、描述和存储,

具有极小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。常见的有Oracle.

MongoDB、MySQL等。

中间件是介于系统软件与应用软件之间,为两者提供资源共享、合作互通的的接口,同

时能够为应用程序提供服务的软件,是一类软件的总称。常见的有PHP、Python,Java等。

(2)

Linux+Apache+Python+Mysql是以Linux作为操作系统,Apache作为Web服务,Python

作为中间件,Mysql做数据库的网站架构。该架构简称LAMP,其中,“P”可以是Python、

PHP等。所以LAMP不是指一种架构,而是指一类架构的统称。

Linux+Tomcai+JDK+Oracle是以Linux作为操作系统,Tomcat作为Web服务,JDK作

为中间件,Oracle作为数据库的网站架构。其中,Tomcat与Apache同属于Apache基金会。

Tomcat同样是一款优秀的Web服务,专注于处理动态请求,甚至在处理动态请求时比Apache

更加擅长。同时,Tomcat也是Java中间件的容器,能够很好地支持Java程序在网站中运行。

Windows+IIS+ASP.NET+Mogodb是以Windows作为操作系统,HS作为Web服务,

ASP.NET作为中间件,Mogodb作为数据库的网站架构。其中,HS(InternetInformationServices)

又称互联网信息服务,是由微软公司提供的一款Web服务,并且只基于Windows系统运行。

Linux+Nginx+PHP+Mysql是以Linux作为操作系统,Nginx作为Web服务,PHP作为

中间件,Mysql作为数据库的网站架构。

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作为动态网站的中间件之后,为动态网站的交互提供了更加优秀的CGL即FastCGh

传统的CGI工作方式是每当一个请求需要CGI进行处理时,Web服务就通过操作系统

调用CGI创建一个进程。当请求处理完成后,就退出该进行,一个请求对应一个进程。当遇

到高并发时,CGI就处于个不断创建进程的状态,工作效率低下,容易造成服务器响应延

迟。

FastCGI作为CGI的改良版,解决了CGI工作性能上的问题。FastCGI通过一个进程管

理器,管理进程池中的进程,减轻了创建进程的压力,提高了工作效率。目前FastCGI已经

被广泛应用,而PHP-FPM就是PHP的FastCGI进程管理器。

FastCGI为Nginx的ngx_fastcgi_modul模块与数据库提供了更加稳定、可靠的接口。

(2)

表示精确匹配,优先级也是最高的。

表示区分大小写的正则匹配。

表示不区分大小写的正则匹配。

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

“八~”表示以某些字符串开头。

表示非区分大小写匹配的正则。

表示非不区分大小写匹配的正则。

4.实操题

10.4习题

1.填空题

(1)伪静态化

(2)静态

(3)安全性

(4)if语句条件判断全局变量

(5)地址

2.选择题

⑴D

(2)C

(3)B

(4)B

(5)D

3.思考题

(1)

理论上,搜索引擎更欢迎静态页面形式的网页,搜索引擎对静态页面的评分一般要高于

动态页面。所以,URL重写可以让网站的网页更容易被搜索引擎所收录。

从安全角度上讲,如果在URL中暴露太多的参数,无疑会造成一定量的信息泄漏,可

能会被一些黑客利用,对系统造成一定的破坏,所以静态化的URL地址可以带来更高的安

全性。

(2)

last标记表示终止当前的页面匹配,客户端重新发送一个请求并按照下一条规则进行匹

配。

break标记表示本条规则匹配完成后终止匹配,不再匹配后面的规则。

last标记与break标记都将终止当前匹配,但last标记回重新发送请求进行匹配,而break

标记将彻底终止匹配。

redirect标记表示返回302临时重定向,浏览器地址会显示跳转后的URL地址。

permanent标记表示返回301永久重定向,浏览器地址会显示跳转后URL地址。

redirect标记与permanent标记的区别是返回的不同方式的重定向,对于客户端来说一

般状态下是没有区别的,而对于搜索引擎,相对来说更喜欢301重定向。

4.实操题

11.4习题

1.填空题

(1)证书颁发机构(CA»CertificateAuthority)

(2)合法性可靠性

(3)信任列表

(4)根子

(5)mod_ssl证书密钥

2.选择题

(DB

(2)D

(3)A

(4)A

(5)B

3.思考题

(1)

1.私有CA证书更容易被伪造,被欺诈网站所利用,而公有证书拥有其独特的数字签

名,不容易被伪造:

2.浏览器会拦截使用私有CA证书的网站,需要用户手动认可,所以私有CA更容易

收到中间人攻击;

3.目前私有CA证书只能支持SSLV2.0协议,而目前公有证书已经在支持更高版本的

协议;

4.私有CA证书没有吊销列表,在证书丢失或被盗时,无法吊销证书,有可能被他人

利用;

5.CA证书普遍都比公有CA证书有效期更长,而CA证书的有效期越长越容易被黑客

破解。

(2)

当需要将正在运行中的Nginx升级,添加或删除服务模块时,可以在不中断服务的情况

下,使用新版本,重新编译的Nginx可执行程序替换旧版本的可执行程序,步骤如下:

1.使用新的可执行程序替换旧的可执行程序,对于编译安装的Nginx,可以将新版本

编译安装到旧版本的Nginx安装路径中。替换之前,最好备份一下旧的可执行程序;

2.发送指令kill-USR2到旧版木的Nginx主进程号,启动新版木Nginx的进程:

3.此时,新旧版本的Nginx近程会同时运行,共同处理请求,要逐步停止旧版本的Nginx

进程,就必须发送WINCH信号给旧版本Nginx的主进程,然后,旧版本Nginx的工作进程

就将开始平滑关闭;

4.一段时间后,旧版本Nginx的工作进程处理了所有已连接的请求后退出,仅由新版

本Nginx的工作进程来处理输入的请求;

5.如果此时需要版本退回,就必需向旧版本Nginx的主进程发送kill-HUP指令。旧版

本Nginx将在不重教配置文件情况下启动它的工作进程,再向新版本Nginx主进程发送关

闭指令,即可实现版本退回;

6.如果不需要版本退回,则向旧版本Nginx的主进程发送关闭指令,即可彻底关闭旧

版本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接收请求,再根据一些规则分配到真实的服

务器。七层负载均衡可以代理任意修改和处理用户的请求,所以可以使整个应用更加智能化

和安全,代价就是设计和配置会更复杂。

(2)

1.轮询算法(RoundRobin,简称RR)

轮询算法是负载均衡分发流量的默认算法。负载均衡调度器通过轮询调度算法将外部请

求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上

实际的连接数和系统负载。

2.加权轮询算法(WeightRoundRobin,简称WRR)

负载均衡调度器可以通过weight指定轮询的权重,权重(比例)越大,被调度的次数越

多。

3.IP_hash算法

负载均衡调度器根据每个请求IP进行调度,可以解决会话的问题,且不能使用weighto

即负载均衡调度器会将同一个客户端IP,发给同一个Web服务器。

4.fair公平算法

fair公平算法是Nginx借助第三方插件实现的调度

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论