upstream机制介绍
Nginx访问上游服务器主要是基于upstream机制。
upstream机制是事件驱动框架与HTTP框架的综合,它既属于HTTP框架的一部分,又可以处于基于TCP的应用层协议。为了帮助Nginx实现反向代理功能,upstream机制处理提供基本的与上游交互的功能之外,还实现里转发上游应用层协议的响应包体到下游客户端的功能。
Nginx访问上游服务器大致可以分为6个阶段:启动UPSREAM机制,连接上游服务器,向上游服务器发送请求,接收上游服务器的响应包头,处理接收都的响应包体,结束请求。
1.启动upstrean机制
启动方式很简单,创建并设置好请求体找那个的upstream成名,然后调用ngx_http_upstream_init就可以了。ngx_http_upstream_init主要就是检查下游读时间的timer_set位,如果定时器中有读事件,则将客户端连接的读事件从定时器移除。然后调用HTTP模块实现create_request方法,最后调用ngx_http_upstream_connect方法连接下游服务器。
2.与上游服务器建立连接
upstream机制与上游服务器是通过无阻塞的套接字来来建立TCP连接的。ngx_http_upstream_connect用来发起建立连接,如果这个方法没有立刻返回成功,那么需要在epoll中监控,当他出现可写事件时,表明连接建立成功。
3.发送请求到上游服务器
发送请求的方法需要被epoll调度许多次ngx_http_upstream_send_request才能发送完请求,
4.接收上游服务器的响应头部
当请求全部发送给上游服务器后,Nginx处于静默状态,ngx_http_upstream_process_header方法处理上游服务器的响应。
6.结束请求
响应处理完后,需要结束请求,upstream机制提供了一个类似的方法ngx_http_upstream_finalize_request用于结束upstream请求。
upstream机制属于HTTP框架,请求组装,发送往上游,解析上游响应的部分都在HTTP模块。