
在我在這裡提問的過程中發送大請求時,生產伺服器比本地測試伺服器慢得多我試圖更深刻地理解網頁伺服器——尤其是 nginx——實際上是做什麼的。基本上我想更好地理解我長期以來認為理所當然的架構。也許這很微不足道,但請聽我說…
我正在使用 nginx 和 Gunicorn 運行 django 應用程序,並向伺服器發送後請求。由於我試圖了解我的效能問題出在哪裡,因此我想詳細了解我的請求是如何處理的。
所以我透過庫發送 POST 請求requests
。據我了解,互聯網上發送的每個數據都使用HTTP
- 協議,所以基本上我發送的數據都是以文字格式傳輸的。正確的?沒有任何Python物件/資料結構的程式碼解釋嗎?那麼到達nginx的請求大小只是轉換為文字格式的請求大小?
當我進一步了解這一點時,nginx 現在以文字格式接收此請求,然後決定如何處理此請求...它將此請求轉發到我的網路(django)應用程式(或者可能更好:我的後端伺服器),我的程式碼在其中正在執行並將資料寫入資料庫。
那麼nginx只是轉送請求就這樣了嗎?或者它還有其他作用嗎?
然後程式碼或資料庫拋出錯誤或向 nginx 傳回成功訊息,nginx 將其作為伺服器輸出傳回(例如 404 或 405 或 201 或任何程式碼...)。
所以我的問題是:nginx 如何處理這些 API 請求以及它們是如何解釋的?
答案1
nginx 只是將請求轉送到您的後端伺服器。如果與客戶端協商,它不會對資料執行任何其他操作(除了壓縮)。
在 99% 的情況下,nginx 中沒有任何內容會顯著影響效能。需要分析效能問題的是實際應用程式。