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模塊。