nginx 工做流程

     NGINX 把http請求處理流程劃分爲11個階段,邏輯細分,以模塊爲單位進行處理。各個階段能夠包含多個http模塊,每一個階段以流水線的形式處理請求。這樣的分層處理模式與計算機網絡的7層模式相似,每一個模塊以正交的方式處理請求,帶來了低耦合,模塊之間的低耦合帶來靈活性。服務器

  1. NGX_HTTP_POST_READ網絡

   接受到完整HTTP頭部後的處理階段,位於URI重寫以前;併發

  2. NGX_HTTP_SERVER_REWRITEspa

    URI與location匹配以前,修改URL的階段,用於重定向,也就是該階段執行處於server塊內,location塊外的重寫指令。在讀取請求頭的過程當中,NGNIX會根據host和端口找到對應的虛擬主機配置。計算機網絡

  3, NGX_HTTP_FIND_CONFIG日誌

   根據URI尋找匹配的location塊配置階段,該階段使用重寫後以後的URI來查找對應的location,該階段可能被執行屢次,可能有location級別的重寫指令。server

  4. NGX_HTTP_REWITR資源

   上一階段找到location塊後,再修改URI,location級別的URI重寫階段,該階段執行location基本重寫指令,也可能會被執行屢次。權限控制

  5. NGX_HTTP_POST_REWRITEio

     爲了防止重寫URI後致使死循環,location級別重寫的後一階段,用來檢查上階段是否有URI重寫,並根據結果跳轉到合適的階段。

  6. NGX_HTTP_PERACCESS

    訪問權限控制的前一階段,該階段在訪問權限控制以前,通常也用於訪問控制,好比限制訪問的頻率、鏈接數等。

  7. NGX_HTTP_ACCESS

     訪問權限控制階段,讓HTTP模塊判斷是否容許這個請求進入NGNIX服務器,好比基於黑名單的權限控制,基於用戶密碼的權限控制等。

  8. NGX_HTTP_POST_ACCESS

     訪問權限控制的後一階段,該階段根據權限控制階段的執行結果進行相應的處理,向用戶發送拒絕服務的錯誤碼,用來相應上一階段的拒絕。

  9. NGX_HTTP_TRY_FILES

     爲訪問靜態資源而設置,try_files指令的處理階段,若是沒有配置try_files指令,則該階段被跳過。

  10. NGX_HTTP_CONTENT

     處理HTTP請求內容的階段,大部分HTTP模塊進入這個階段--相應內容生成階段,該階段產生相應,併發送到客戶端。

  11. NGX_HTTP_LOG

   處理完請求後的日誌記錄階段,該階段記錄訪問日誌。

相關文章
相關標籤/搜索