天天看點

Nginx基礎之http、https、socket 、SSL及TCP簡單關系

 nginx是比較流行的輕量級的web伺服器,但在實際的應用中基本是利用其upstream子產品來作為web的反向代理和負載均衡;當然nginx也可以作為mail的反向代理,這個情況比較少,主要還是web代理,談到web基本上逃不過http\https\SSL\TCP這四個協定。

  了解http\https\SSL\TCP這四個協定之間的關系有助于後期對nginx的安裝、配置和優化。

一、HTTP協定

  HTTP協定定義了web用戶端如何從web伺服器上請求web頁面,以及服務如何把web頁面傳輸給web用戶端。目前http是協定發展到http 1.1 版本(RFC2616),它與舊版http 1.0版本(RFC 1945)互相相容。

HTTP流程基本原理:

(1)HTTP請求:web浏覽器先向本地的socket發送HTTP請求,socket使用TCP向web伺服器請求連接配接,經過TCP三向交握後将請求發送到伺服器的socket,伺服器的socket将請求資訊發送給web伺服器應用。

(2)HTTP響應:web伺服器接到請求後将結果資訊傳送到伺服器本地的socket,伺服器本地socket通過TCP将結果資訊傳送給web用戶端本地的socket,最終web用戶端的socket将資訊傳遞給web浏覽器。

HTTP有一個重要的特征是無狀态協定,意味着每一次請求都會執行一次上述的流程,在少量請求的情況下,使用者不會感覺響應速度,但是一旦大量并發,有可能性能就下降加快,根據上述的流程我們可以考慮從以下四點進行優化:

(1)TCP是一個有擁塞控制機制的,在建立連接配接初期會以慢速傳送,一旦确定網絡不擁塞才會上升一個較快的速度進行傳送,這個過程稱之為TCP慢啟動。是以考慮調整TCP相關的參數。

(2)根據情況考慮選擇HTTP持久連接配接或者HTTP非持久連接配接。非持續連接配接每一次通路都會執行一次流程,适合少量通路的站點。持續連接配接是一個用戶端一旦和伺服器連接配接,後續的通路可利用這次連接配接可快速通路,無需再經曆一次慢啟動,當伺服器端在一定的時間内不再接到同一用戶端的通路時,斷開連接配接;

(3)壓縮傳送的資訊量。這個需要web伺服器内是否設定動靜态壓縮;

(4)是否需要本地的緩存代理;

二、HTTPS協定

  HTTPS協定簡單一點就是HTTP+SSL(Secure Socket Layer),SSL協定棧如下:

HTTP

SSL

TCP

IP

https流程基本原理:

(1)用戶端向伺服器發起會話,協商傳送加密算法;伺服器向用戶端發送伺服器數字證書。用戶端想證書頒發機構證明證書的有效性,并用查詢到的伺服器證書的公鑰加密建立加密會話的密鑰後發送過伺服器;伺服器接到加密的密鑰後,用私鑰解密得到密鑰;

(2)利用(1)中得到的密鑰,将每次的HTTP請求資訊和請求結果進行加密傳輸;

三、HTTP響應碼

1xx:訓示資訊,表示請求已接收,繼續處理;

2xx:成功,表示請求已被成功接收;

3xx:重定向,表示完成請求必須進行更進一步的操作;

4xx: 用戶端錯誤,請求有文法錯誤或者請求無法實作;

5xx:伺服器端錯誤,伺服器未能實作合法的請求;

四、參考文章

Apache\Nginx\Lighttpd之間的對比:

<a href="http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html" target="_blank">http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html</a>

本文轉自 bannerpei 51CTO部落格,原文連結:http://blog.51cto.com/281816327/1619556,如需轉載請自行聯系原作者

繼續閱讀