一、一個http請求從開始到Django后台,到結束發生了什么
- 通過用戶輸入的域名解析出IP地址
- TCP/IP 三次握手
- 進入nginx---->django
4.TCP/IP 四次揮手
1.1 通過用戶輸入的域名解析出IP地址
- 第一步: 客戶端先檢查本地是否有對應的IP地址緩存,找到就返回,沒有找到就向上一級DNS服務器發送請求,直到找到或根節點。 順序為:
瀏覽器緩存-->系統緩存-->路由器緩存-->ISP DNS緩存-->從根域名服務區遞歸搜索
1.2 TCP/IP 三次握手
- client先發送一個帶synchronize (SYN)標志的數據包給server,在設定的超時時間內等待server的回復,
- server 端接收到該數據包后,返回一個帶 SYN/ACK (acknowledge charactor) 標志的數據包以表示傳達確認信息。
- client 收到后再發送一個帶有ACK標識的數據包給server表示連接(握手)成功
連接成功后client給web服務器發送一個HTTP請求
1.3 請求進入nginx--->django
HTTP請求進入nginx: 反向代理:指服務提供方出一個代理,客戶請求只和代理打交道 如nginx代理:http請求進入nginx處理后,找到對應的業務處理服務器。靜態請求如CSS,JS,圖片等,就轉向靜態服務器,如果是動態請求,就把請求分發到Web應用服務器。 不管是靜態還是動態都有多台服務器,Nginx按照一定策略把請求向業務服務器進行分配,防止壓力集中到一台服務器上,
這就是所說的負載均衡 nginx還可配置一些防爬蟲、設置超時時間,文件大小允許等。如爬蟲>監控某一Ip如果在短時間類發起大量請求如1s內50次,就將其標記為黑名單。
HTTP分配到Django
一個請求在django的生命周期:
首先請求來到url路由系統,通過查詢本地url對應服務,將請求轉向相應的業務邏輯函數或類。業務邏輯在處理相應的數據庫、static、templates/html后將處理好的模版字符串返回,然后結果返回客戶端,經過瀏覽器相應渲染呈現在屏幕。
1.4 四次揮手
pass