stub_status_module-模块
目的:展示nginx链接状态
查询模块得方式
nginx -V 2>&1 | grep stub_status
在结果中显示以下得内容
--with-http_stub_status_module
vim /etc/nginx/conf.d/default.conf
server {
location /nginx_status {
stub_status;
allow all;
}
}
重启nginx将配置生效
systemctl restart nginx
页面访问 IP/nginx_status
页面出现以下内容
Active connections: 22 当前活动的连接数
17 总连接数connection(TCP)
17 成功的连接数connection (TCP)
24 总共处理的请求数requests(HTTP)
1、什么是链接
OSI7层模型中得传输层
中的代表协议 TCP、UDP
TCP封装结构
端口号:用来标识同一台计算机不同的应用进程。
源端口: 占2个字节,源端口和IP地址的作用是标识报文的返回地址。
目的端口: 占2个字节,端口指明接收方计算机上的应用程序接口。
TCP报头中的源端口号和目的端口号同IP报头中的源IP和目的IP唯一确定一条TCP连接。
序列号: 占4个字节,是TCP可靠传输的关键部分,是本报文段发送的数据组的第一个字节的序号;在TCP传输流中,每一个字节一个序号。序号确保了TCP传输的有序性。
确认号: 占4个字节,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到;确认号只有当ACK=1时才有效。(比如建立连接时,SYN报文的ACK标志位为0)
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
第一次挥手:客户端发送FIN包给服务器端,关闭数据传送,客户端进入FIN_WAIT_1状态;
第二次挥手:服务器端接受到FIN包后,发送ACK包给客户端,并且确认序号+1,之后进入CLOSE_WAIT状态;
第三次挥手:服务器端发送FIN包给客户端,关闭Server到Client的数据传送,并进入LAST_ACK状态,
第四次挥手:客户端发送ACK包给服务器端,进入TIME_WAIT状态,,服务器接收到后也进入CLOSE状态
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,
Httpd守护进程,一般都提供了keep-alive timeout时间设置参数。比如nginx的keepalive_timeout,和Apache的KeepAliveTimeout。这个 keepalive_timout时间值意味着:一个http产生的tcp连接在传送完最后一个响应后,还需要hold住 keepalive_timeout秒后,才开始关闭这个连接。当httpd守护进程发送完一个响应后,理应马上主动关闭相应的tcp连接,设置 keepalive_timeout后,httpd守护进程会想说:”再等等吧,看看浏览器还有没有请求过来”,这一等,便是 keepalive_timeout时间。如果守护进程在这个等待的时间里,一直没有收到浏览发过来http请求,则关闭这个http连接。