日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx的keeplive

發布時間:2023/12/10 Nginx 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx的keeplive 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

keepalive

當然,在nginx中,對于http1.0與http1.1也是支持長連接的。

什么是長連接呢?我們知道,http請求是基于TCP協議之上的,那么,當客戶端在發起請求前,需要先與服務端建立TCP連接,而每一次的TCP連接是需要三次握手來確定的,如果客戶端與服務端之間網絡差一點,這三次交互消費的時間會比較多,而且三次交互也會帶來網絡流量。當然,當連接斷開后,也會有四次的交互,當然對用戶體驗來說就不重要了。而http請求是請求應答式的,如果我們能知道每個請求頭與響應體的長度,那么我們是可以在一個連接上面執行多個請求的,這就是所謂的長連接,但前提條件是我們先得確定請求頭與響應體的長度。

對于請求來說,如果當前請求需要有body,如POST請求,那么nginx就需要客戶端在請求頭中指定content-length來表明body的大小,否則返回400錯誤。也就是說,請求體的長度是確定的,那么響應體的長度呢?先來看看http協議中關于響應body長度的確定:

  • 對于http1.0協議來說,如果響應頭中有content-length頭,則以content-length的長度就可以知道body的長度了,客戶端在接收body時,就可以依照這個長度來接收數據,接收完后,就表示這個請求完成了。而如果沒有content-length頭,則客戶端會一直接收數據,直到服務端主動斷開連接,才表示body接收完了。
  • 而對于http1.1協議來說,如果響應頭中的Transfer-encoding為chunked傳輸,則表示body是流式輸出,body會被分成多個塊,每塊的開始會標識出當前塊的長度,此時,body不需要通過長度來指定。如果是非chunked傳輸,而且有content-length,則按照content-length來接收數據。否則,如果是非chunked,并且沒有content-length,則客戶端接收數據,直到服務端主動斷開連接。
  • 從上面,我們可以看到,除了http1.0不帶content-length以及http1.1非chunked不帶content-length外,body的長度是可知的。此時,當服務端在輸出完body之后,會可以考慮使用長連接。能否使用長連接,也是有條件限制的。如果客戶端的請求頭中的connection為close,則表示客戶端需要關掉長連接,如果為keep-alive,則客戶端需要打開長連接,如果客戶端的請求中沒有connection這個頭,那么根據協議,如果是http1.0,則默認為close,如果是http1.1,則默認為keep-alive。如果結果為keepalive,那么,nginx在輸出完響應體后,會設置當前連接的keepalive屬性,然后等待客戶端下一次請求。

    當然,nginx不可能一直等待下去,如果客戶端一直不發數據過來,豈不是一直占用這個連接?所以當nginx設置了keepalive等待下一次的請求時,同時也會設置一個最大等待時間,這個時間是通過選項keepalive_timeout來配置的,如果配置為0,則表示關掉keepalive,此時,http版本無論是1.1還是1.0,客戶端的connection不管是close還是keepalive,都會強制為close。

    如果服務端最后的決定是keepalive打開,那么在響應的http頭里面,也會包含有connection頭域,其值是”Keep-Alive”,否則就是”Close”。如果connection值為close,那么在nginx響應完數據后,會主動關掉連接。所以,對于請求量比較大的nginx來說,關掉keepalive最后會產生比較多的time-wait狀態的socket。一般來說,當客戶端的一次訪問,需要多次訪問同一個server時,打開keepalive的優勢非常大,比如圖片服務器,通常一個網頁會包含很多個圖片。打開keepalive也會大量減少time-wait的數量。



    作者:JokerW
    鏈接:https://www.jianshu.com/p/630e2e1ca57f
    來源:簡書
    簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。

    轉載于:https://www.cnblogs.com/AKUN-FYK/p/11129230.html

    總結

    以上是生活随笔為你收集整理的Nginx的keeplive的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。