目錄
LNMP的運維追踪技巧總結
一個Web請求過程中到底發生了什麼事?
第一步
#第二步
第三步
第四步驟
首頁 後端開發 php教程 對LNMP的維運追蹤

對LNMP的維運追蹤

Jul 13, 2018 pm 03:48 PM
linux nginx php

這篇文章主要介紹了關於對LNMP的維運追踪,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

LNMP的運維追踪技巧總結

曾幾何時我開始維運公司的LNMP網站,經過一段時間的摸爬滾打,也算是總結了不少在LNMP伺服器下調試追蹤各種網站錯誤的方法。好記性不如爛筆頭,還是總結一下吧!

在開始我會梳理一下我所理解的一個web請求從發起到回應的各個階段伺服器和瀏覽器分別做了什麼。所以的使用者回應異常都是發生在這個流程中的,知道每個流程的細節可以透過不同的方法分別定位異常發生在哪個階段,從而更準確快速的定位錯誤。後面就是持續更新的我在被這個網站折磨中經歷的各種錯誤,給自己做一個記錄,當然如果能幫到其他人,我也很榮幸。

一個Web請求過程中到底發生了什麼事?

對LNMP的維運追蹤

上圖是一個簡單的web請求全過程,嗯,畫的確實有點過於簡單,上圖中我隱藏了很多細節,下面一一說明,可能有沒涉及到的地方歡迎補充:

第一步

用戶輸入url如http:www.baidu.com到瀏覽器,瀏覽器如chrom需要解析為ip位址才知道需要到哪裡去訪問哪個伺服器。瀏覽器解析DNS步驟如下:

  1. 搜尋瀏覽器本身的dns緩存,這個快取快取時間短,快取數量有限。

  2. 搜尋作業系統的dns快取

  3. 讀取host檔案的dns映射(一般做本地開發映射都是修改這個檔案來達到攔截瀏覽器請求到本地伺服器的目的,從而使本地可以成功映射伺服器位址)

  4. #先本地網卡配置裡的dns伺服器發起網域名稱解析請求,這裡好像還有一套運營商的處理流程就不在展開了。

  5. 下面好像還有一些流程,由於基本上不會執行到這一步,一般所以dns運營商的dns伺服器都會搞定的。

  6. 解析失敗,以上任何一步成功都會傳回一個成功的ip位址

#第二步

瀏覽器以一個隨機的連接埠享受這個ip位址的特定連接埠(預設80)發起著名的TCP3次握手。關於一個http請求是如何到達nginx服務的流程大致如下:

st=>start: TCP请求
en=>end: 异常
op=>operation: Nginx模块
cond1=>condition: 进入网卡?
cond2=>condition: 内核的TCP/IP协议栈?
cond3=>condition: 防火墙?

st->cond1
cond1(yes)->cond2
cond1(no)->en
cond2(yes)->cond3
cond2(no)->en
cond3(no)->en
cond3(yes)->op
登入後複製

第三步

握手完成後的瀏覽器和伺服器就可以愉快地發送http請求了,具體在nginx上流程如下:

st=>start: http请求
en=>end: response响应 
op1=>operation: 第二步流程 
op2=>operation: nginx进程 
op3=>operation: 获取http的头部信息 
op4=>operation: 匹配server_name,定位到站点的root 
op5=>operation: 进入代码框架的路由 
op6=>operation: 框架的路由解析器解析出php文件 
op7=>operation: php进入fastcgi进程 
op8=>operation: fastcgi进程将php填充成html文件 
op9=>operation: html文件递交给nginx并设置响应信息 

st->op1->op2->op3->op4->op5->op6->op7->op8->op9->en
登入後複製

第四步驟

瀏覽器根據伺服器resopnse的回應頭和回應體渲染出視覺化頁面

#回應碼 說明
1xx 資訊性狀態說明
2xx 成功狀態碼
3xx #重定向狀態碼
301 永久重定向, Location回應首部的值仍為目前URL,因此為隱藏重定向
#302 暫時重定向,明確重定向, Location回應首部的值為新的URL
304 Not Modified  未修改,例如本機快取的資源檔案和伺服器上比較時,發現並沒有修改,伺服器回傳一個304狀態碼,告訴瀏覽器,你不用請求該資源,直接使用本地的資源即可
4xx 客戶端錯誤
404 Not Found  請求的URL資源並不存在
#5xx #伺服器錯誤
#500 Internal Server Error  伺服器內部錯誤
502 Bad Gateway  前面代理伺服器聯絡不到後端的伺服器時出現
504 Gateway Timeout  這個是代理能聯絡後端的伺服器,但是後端的伺服器在規定的時間內沒有給代理伺服器回應

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

對於PhpStorm程式碼格式化設定的介紹

如何在yii2框架的di容器原始碼中了解反射的作用

以上是對LNMP的維運追蹤的詳細內容。更多資訊請關注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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1653
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1251
29
C# 教程
1224
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP的影響:網絡開發及以後 PHP的影響:網絡開發及以後 Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

繼續使用PHP:耐力的原因 繼續使用PHP:耐力的原因 Apr 19, 2025 am 12:23 AM

PHP仍然流行的原因是其易用性、靈活性和強大的生態系統。 1)易用性和簡單語法使其成為初學者的首選。 2)與web開發緊密結合,處理HTTP請求和數據庫交互出色。 3)龐大的生態系統提供了豐富的工具和庫。 4)活躍的社區和開源性質使其適應新需求和技術趨勢。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

laravel安裝代碼 laravel安裝代碼 Apr 18, 2025 pm 12:30 PM

要安裝 Laravel,需依序進行以下步驟:安裝 Composer(適用於 macOS/Linux 和 Windows)安裝 Laravel 安裝器創建新項目啟動服務訪問應用程序(網址:http://127.0.0.1:8000)設置數據庫連接(如果需要)

See all articles