nginx基礎http協議
阿新 • • 發佈:2018-09-15
stat 存在 架構圖 watermark 以及 get nginx 解析 jpg Nginx基礎Http
Http協議介紹
http全稱HyperText Transfer Protocol中文名為超文本傳輸協議
1.什麽是超文本?
包含有超鏈接(Link)和各種多媒體元素標記的文本。這些超文本文件彼此鏈接,形成網狀(Web),因此又被稱為網頁(Web Page)。這些鏈接使用URL表示。最常見的超文本格式是超文本標記語言HTML。
2.什麽是URL
3.什麽是超文本傳輸協議HTTP?
是一種按照URL指示,將超文本文檔從一臺主機(Web服務器)傳輸到另一臺主機(瀏覽器)的應用層協議,以實現超鏈接的功能。
4.http協議總結
1.http是一個超文本傳輸協議 2.http建立在應用層協議基礎之上 3.http默認端口80, https默認端口443 4.一次tcp的鏈接,可以包含多次http的請求
Http工作原理
1.本地會進行一次redirect跳轉
2.先查看本地緩存如果沒有再發起dns請求
3.獲取到域名對應的IP地址
4.瀏覽器發起tcp的連接
5.基於tcp的連接,傳輸http的請求(一次tcp的連接,可以建立多次的http請求)
6.瀏覽器請求/index.html
7.服務器響應/index.html至瀏覽器
8.瀏覽器翻譯index.html中的內容為人類可讀
9.斷開TCP的四次揮手
Http請求報文
1.http請求報文的方法 get # 獲得請求文件信息的數據內容(獲取) post # 用戶提交數據至服務器端存儲(提交) Request URL:http://10.0.0.7/index.html # 請求的URL Request Method:GET # 請求的方法 Status Code:200 OK # 當前的狀態 Remote Address:10.0.0.7:80 # 遠程的主機 2.客戶端請求報文的頭部信息示例
Accept: text/html, # 請求的類型 Accept-Encoding: gzip, deflate # 是否進行壓縮 Accept-Language: zh-CN,zh;q=0.9 # 請求的語言 Cache-Control: max-age=0 # 緩存 Connection: keep-alive # TCP長連接 Host: www.oldboyedu.com # 請求的域名 If-Modified-Since: Fri, 04 May 2018 08:13:44 GMT # 修改的時間 If-None-Match: "a49-56b5ce607fe00" # 標記 Upgrade-Insecure-Requests:1 # 在http和https之間起的一個過渡作用 User-Agent: Mozilla/5.0 # 用戶的瀏覽器 ===========請求一個空行=========================
Http響應報文
http響應(響應報文中的狀態碼)
1.狀態碼(Status-Code)是響應報文狀態行中包含的一個3位數字,指明特定的請求是否被滿足,如果沒有滿足,原因是什麽。狀態碼分為以下五類:
200 ok # 訪問正常
301 redirect # 永久重定向
302 redirect # 臨時重定向
304 Not Modified # 客戶端緩存
403 Forbidden # 服務端權限問題
404 Not Found # 頁面不存在
500 Internal Server Error # 權限、代碼、php服務
502 Bad Gateway # 請求後端服務失敗
504 Gateway Timeout # 網關超時
2.服務端響應報文的頭部信息示例
HTTP/1.1 304 Not Modified # 返回服務器的http 協議,狀態碼
Date: Fri, 14 Sep 2018 09:14:28 GMT # 返回服務器的時間
Server: Apache/2.4.6 (CentOS) PHP/5.4.16 # 返回服務器使用的軟件(Apache php)
Connection: Keep-Alive # TCP長連接
Keep-Alive: timeout=5, max=100 # 長連接的超時時間
ETag: "a49-56b5ce607fe00" # 驗證客戶端標記
===========返回一個空行=========================
===========返回內容頁面=========================
Http相關術語
環境: 如果一棟大廈裏所有工作人員通過1個IP公網接口上網, 每個人有一個電腦和一部手機, 當所有人同時請求一個網站, 並且刷新了2次, 那麽請求pv、ip、uv分別是多少
pv:頁面瀏覽量 400 PV:頁面瀏覽量
uv:唯一設備 200 uv:獨立的客戶
ip:唯一出口 1 ip:獨立IP
並發
A種理解:網站服務器每秒能夠接收的最大用戶請求數。
B種理解:網站服務器每秒能夠響應的最大用戶請求數。
C種理解:網站服務器在單位時間內能夠處理的最大連接數。(推薦)
網站訪問流程
1.客戶端輸入域名以及請求的頁面
2.本地會進行一次redirect跳轉
3.解析域名對應的dns
4.最終客戶端瀏覽器獲取到dns的IP地址
5.客戶端會與服務端發起TCP的三次握手(長連接)
6.客戶端發起http請求,請求會先抵達前端的防火墻
7.防火墻識別用戶身份,正常的請求通過內部交換機通過tcp連接後端的負載均衡,然後 傳遞用戶的http請求
8.負載接收到請求,會根據請求的內容進行下發任務,通過tcp連接後端的web,然後下 發用戶的http請求
9.web接收到用戶的http請求後,會根據用戶請求的內容進行解析,解析分為如下兩 步:
靜態請求:由web服務器向nfs建立tcp連接,獲取對應的圖片,最後返回給負載均衡(負 載均衡->防火墻->用戶)
動態請求:有web向後端的動態程序建立TCP連接,將用戶的動態http請求傳遞給動態程 序->由動態程序進行解析
10.動態程序在解析的過程中,如果碰到查詢數據庫的請求,則優先和緩存建立tcp的連 接,然後緩存服務發起http的查詢
11.如果緩存沒有對應的數據,動態程序再次向數據庫建立tcp的連接,然後發起查詢操 作。
12.由數據庫返回->動態程序->緩存->web服務->負載均衡->防火墻->用戶。
綜合架構圖:
nginx基礎http協議