從本質上說,upstream屬于handler,只是他不產生自己的內容,而是通過請求后端服務器得到內容,所以才稱為upstream(上游)。請求并取得響應內容的整個過程已經被封裝到nginx內部,所以upstream模塊只需要開發若干回調函數,完成構造請求和解析響應等具體的工作。
這些回調函數如下表所示:
| create_request | 生成發送到后端服務器的請求緩沖(緩沖鏈),在初始化upstream 時使用。 |
|-----|-----|
| reinit_request | 在某臺后端服務器出錯的情況,nginx會嘗試另一臺后端服務器。 nginx選定新的服務器以后,會先調用此函數,以重新初始化 upstream模塊的工作狀態,然后再次進行upstream連接。 |
| process_header | 處理后端服務器返回的信息頭部。所謂頭部是與upstream server 通信的協議規定的,比如HTTP協議的header部分,或者memcached 協議的響應狀態部分。 |
| abort_request | 在客戶端放棄請求時被調用。不需要在函數中實現關閉后端服務 器連接的功能,系統會自動完成關閉連接的步驟,所以一般此函 數不會進行任何具體工作。 |
| finalize_request | 正常完成與后端服務器的請求后調用該函數,與abort_request 相同,一般也不會進行任何具體工作。 |
| input_filter | 處理后端服務器返回的響應正文。nginx默認的input_filter會 將收到的內容封裝成為緩沖區鏈ngx_chain。該鏈由upstream的 out_bufs指針域定位,所以開發人員可以在模塊以外通過該指針 得到后端服務器返回的正文數據。memcached模塊實現了自己的 input_filter,在后面會具體分析這個模塊。 |
| input_filter_init | 初始化input filter的上下文。nginx默認的input_filter_init 直接返回。 |
- 上篇:nginx模塊開發篇
- nginx平臺初探
- 初探nginx架構
- nginx基礎概念
- connection
- request
- keepalive
- pipe
- lingering_close
- 基本數據結構
- ngx_str_t
- ngx_pool_t
- ngx_array_t
- ngx_hash_t
- ngx_hash_wildcard_t
- ngx_hash_combined_t
- ngx_hash_keys_arrays_t
- ngx_chain_t
- ngx_buf_t
- ngx_list_t
- ngx_queue_t
- nginx的配置系統
- 指令參數
- 指令上下文
- nginx的模塊化體系結構
- 模塊的分類
- nginx的請求處理
- handler模塊
- handler模塊簡介
- 模塊的基本結構
- 模塊配置結構
- 模塊配置指令
- 模塊上下文結構
- 模塊的定義
- handler模塊的基本結構
- handler模塊的掛載
- handler的編寫步驟
- 示例: hello handler 模塊
- handler模塊的編譯和使用
- 更多handler模塊示例分析
- http access module
- http static module
- http log module
- 過濾模塊
- 過濾模塊簡介
- 過濾模塊的分析
- upstream模塊
- upstream模塊
- upstream模塊接口
- memcached模塊分析
- 本節回顧
- 負載均衡模塊
- 配置
- 指令
- 鉤子
- 初始化配置
- 初始化請求
- peer.get和peer.free回調函數
- 本節回顧
- 其他模塊
- core模塊
- event模塊
- 模塊開發高級篇
- 變量
- 下篇:nginx原理解析篇
- nginx架構詳解
- nginx的源碼目錄結構
- nginx的configure原理
- 模塊編譯順序
- nginx基礎設施
- 內存池
- nginx的啟動階段
- 概述
- 共有流程
- 配置解析
- nginx的請求處理階段
- 接收請求流程
- http請求格式簡介
- 請求頭讀取
- 解析請求行
- 解析請求頭
- 請求體讀取
- 讀取請求體
- 丟棄請求體
- 多階段處理請求
- 多階段執行鏈
- POST_READ階段
- SERVER_REWRITE階段
- FIND_CONFIG階段
- REWRITE階段
- POST_REWRITE階段
- PREACCESS階段
- ACCESS階段
- POST_ACCESS階段
- TRY_FILES階段
- CONTENT階段
- LOG階段
- Nginx filter
- header filter分析
- body filter分析
- ngx_http_copy_filter_module分析
- ngx_http_write_filter_module分析
- subrequest原理解析
- https請求處理解析
- 附錄A 編碼風格
- 附錄B 常用API
- 附錄C 模塊編譯,調試與測試