nginx處理http的請求是nginx最重要的職能,也是最複雜的一部分。可以大概說下執行流程:
請求頭讀取;
##解析請求行;
解析請求頭;
讀取請求體;
開始最重要的部分,即多階段處理; nginx把請求處理分割成了11個階段,也就是說當nginx讀取了請求行和請求頭之後,將請求封裝了結構體ngx_http_request_t,然後每個階段的handler都會根據這個ngx_http_request_t,對請求進行處理,例如重寫uri,權限控制,路徑查找,生成內容以及記錄日誌等等;
#將結果傳回給客戶端;
#ngx_http_process_request_line函數的主要作用即是解析請求行,同樣由於涉及到網路IO操作,即使是很短的一行請求行可能也不能被一次讀完,所以在之前的ngx_http_init_request函式中,ngx_http_process_request_line函式被設定為讀取事件的處理函數,它也只擁有一個唯一的ngx_event_t *類型參數,並且在函數的開頭,同樣需要判斷是否是超時事件,如果是的話,則關閉這個請求和連接;否則開始正常的解析流程。先呼叫ngx_http_read_request_header函數讀取資料。 多階段處理是nginx模組最重要的部分,因為第三方模組也是註冊在這;Nginx使用教學欄位進行學習!
以上是nginx如何處理http請求的詳細內容。更多資訊請關注PHP中文網其他相關文章!