1. 程式人生 > >nginx基礎http協議

nginx基礎http協議

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協議