nginx源碼中upstream的主要流程

upstream 即上游的意思,是一個想對到概念,從客戶端到中間的網絡鏈路到服務器到鏈路中,能夠將越接近客戶到設備越理解成下游,相反到爲上游,因此若是隻有一個upstream,能夠將其爲理解成轉發客戶到請求到服務器,而後響應服務器轉發到客戶端到過程,源碼主要流程以下:後端

 

1、建立upstream           緩存

ngx_http_upstream_init服務器

  刪除超時定時器網絡

  建立到上游到請求socket

  掛接一些處理函數,包含第6步中要用到的請求結束後upstream到清理函數
tcp

 

二、創建與上游的鏈接函數

ngx_http_upstream_connectspa

    建立socket、connetion,發起tcp建連請求,使用epoll發送請求,掛接upstream的handler,包括第4、5步中處理上游應答的處理函數內存

 

三、發送到上游的請求 資源

ngx_http_upstream_send_request

四、處理上游的響應頭

process_header 解析請求頭

ngx_http_upstream_process_headers處理請求頭

 

五、處理上游的響應體

ngx_http_upstream_process_body_in_memory

若是須要轉發相應體,能夠本身實現input_filter,若不本身實現則使用默認的ngx_http_upstream_non_buffered_filter

 (1)upstream與上游之間網速很快時,使用大內存甚至文件,緩存上游大請求

 (2)upstream與下游之間網速很快時,使用固定大小內存,不須要過多緩存請求

ngx_http_upstream_send_response中經過判斷

buffering決定走上述的那個流程

 

6、結束upstream 請求

ngx_http_upstream_cleanup

主要釋放一些upstream使用的資源

 

 

傳統方法中經常使用的鉤子:

uscf->peer.init_upstream. 初始化 upstream配置,

在upstream配置初始化過程當中用鉤子us->peer.init初始化請求,

在初始化請求中每每建立請求和upstream的關係,而後用鉤子peer.get定義獲取後端服務器方法等,peer.free與peer.get匹配。

相關文章
相關標籤/搜索