首頁 運維 Nginx nginx如何處理http請求

nginx如何處理http請求

Jun 04, 2019 pm 04:20 PM
nginx

nginx處理http的請求是nginx最重要的職能,也是最複雜的一部分。可以大概說下執行流程:

nginx如何處理http請求

請求頭讀取;

##解析請求行;

解析請求頭;

讀取請求體;

開始最重要的部分,即多階段處理; 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和memcache做頁面快取的第三方模組,也可以把memcache換成redis集群等等;

而且nginx多階段處理有點類似python和golang web框架的中間件,後者主要是用裝飾器模式,對handler一層一層封裝,而nginx是用數組(鍊錶)形式組合多階段handler,然後按handler鍊錶執行即可;

客戶端發送過的統一資源定位符(url)對應伺服器上某一路徑上的資源,web伺服器需要做的只是將url映射到本地檔案系統的路徑,然後讀取對應檔案並返回給客戶端。但這只是最初的網路的需求,而如今網路出現了各種複雜的需求,要求web伺服器能夠處理諸如安全及權限控制,多媒體內容和動態網頁等等問題。這些複雜的需求導致web伺服器不再是一個短小的程序,而變成了一個必須經過仔細設計,模組化的系統。

nginx良好的模組化特性體現在其對請求處理流程的多階段劃分當中,多階段處理流程就好像一條管線,一個nginx程序可以並發的處理處於不同階段的多個請求。 nginx允許開發者在處理流程的任意階段註冊模組,在啟動階段,nginx會把各個階段註冊的所有模組處理函數依序的組織成一條執行鏈。

更多Nginx相關技術文章,請造訪

Nginx使用教學欄位進行學習!

以上是nginx如何處理http請求的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

nginx怎麼查看運行狀態 nginx怎麼查看運行狀態 Apr 14, 2025 am 11:48 AM

查看 Nginx 運行狀態的方法有:使用 ps 命令查看進程狀態;查看 Nginx 配置文件 /etc/nginx/nginx.conf;使用 Nginx 狀態模塊啟用狀態端點;使用 Prometheus、Zabbix 或 Nagios 等監控工具。

nginx如何配置負載均衡 nginx如何配置負載均衡 Apr 14, 2025 am 08:33 AM

如何配置 Nginx 進行負載均衡?定義上游服務器池,指定服務器 IP 和端口。定義虛擬主機,監聽連接並轉發到上游池。指定位置,匹配請求並轉發到上游池。

linux怎麼啟動nginx linux怎麼啟動nginx Apr 14, 2025 pm 12:51 PM

在 Linux 中啟動 Nginx 的步驟:檢查 Nginx 是否已安裝。使用 systemctl start nginx 啟動 Nginx 服務。使用 systemctl enable nginx 啟用在系統啟動時自動啟動 Nginx。使用 systemctl status nginx 驗證啟動是否成功。在 Web 瀏覽器中訪問 http://localhost 查看默認歡迎頁面。

nginx403錯誤怎麼解決 nginx403錯誤怎麼解決 Apr 14, 2025 pm 12:54 PM

服務器無權訪問所請求的資源,導致 nginx 403 錯誤。解決方法包括:檢查文件權限。檢查 .htaccess 配置。檢查 nginx 配置。配置 SELinux 權限。檢查防火牆規則。排除其他原因,如瀏覽器問題、服務器故障或其他可能的錯誤。

nginx怎麼啟動 nginx怎麼啟動 Apr 14, 2025 pm 01:06 PM

問題:如何啟動 Nginx?答案:安裝 Nginx啟動 Nginx驗證 Nginx 是否已啟動探索其他啟動選項自動啟動 Nginx

nginx中如何重定向 nginx中如何重定向 Apr 14, 2025 am 08:42 AM

通過 Nginx 進行重定向的方法有 301 永久重定向(更新鏈接或移動頁面)和 302 臨時重定向(處理錯誤或臨時更改)。配置重定向涉及在 server 塊中使用 location 指令,高級功能包括正則表達式匹配、代理重定向和基於條件的重定向。重定向的常見用途包括更新 URL、處理錯誤、將 HTTP 重定向到 HTTPS,以及引導用戶訪問特定國家或語言版本。

nginx怎麼啟用stream nginx怎麼啟用stream Apr 14, 2025 am 09:45 AM

如何啟用 Nginx 的 Stream 模塊?啟用 Stream 模塊需要六個步驟:安裝 Stream 模塊配置 Nginx創建 Stream 服務器塊配置 Stream 服務器選項重啟 Nginx驗證啟用

怎麼解決nginx跨域問題 怎麼解決nginx跨域問題 Apr 14, 2025 am 10:15 AM

解決 Nginx 跨域問題有兩種方法:修改跨域響應頭:添加指令以允許跨域請求,指定允許的方法和頭,以及設置緩存時間。使用 CORS 模塊:啟用模塊並配置 CORS 規則,允許跨域請求、方法、頭和設置緩存時間。

See all articles