web理論知識--網頁訪問過程(附有Django的web項目訪問流程) 使用Nginx+uwsgi在亞馬遜雲服務器上部署python+django項目完整版(二)——部署配置及相關知識

  當我們閒暇之餘想上網看看新聞,或者看個電影,通常的操作是:打開電腦、打開瀏覽器、輸入網址、瀏覽頁面信息、點擊自己感興趣的連接......那麼有沒有想過,這些網頁從哪裏來的?過程中計算機又做了什麼事情了?(PS,白話式敘述,有些囉嗦,勿噴。)

一、基礎普及:

  首先先定義幾個名詞,我們使用電腦上的瀏覽器訪問網頁,那麼我們的電腦瀏覽器(Browser)就是客戶端(Client),想一下:其實我們都是客戶;而網上有一個大型的服務器(大點的電腦主機)用於存儲我們看到的頁面、視頻、圖片等等數據,服務器會根據我們的要求,將指定的內容發給我們,這個大型的服務器就是服務端(Server)。

  客戶端通過網絡將需求發給服務端,服務端也是通過網絡將數據發給客戶端,數據在網絡上高速傳輸,就好比汽車行駛在高速公路上,爲了保證安全、順暢的行駛,我們都需要遵守交通規則,同樣數據在網絡上傳輸也需要遵守一定的規則--稱爲協議,互聯網相關的協議多如牛毛,所有的這些協議統稱爲TCP/IP協議族,而我們熟知的HTTP就屬於其中的一員。

  每一個服務器都有一個唯一的IP地址,這個IP地址相當於服務器的身份證號,不同的服務器IP地址肯定不同,而客戶端訪問服務器,實際上是通過IP地址找到服務器進行訪問的,但是IP地址是純數字,比如120.25.254.88,普通人類難以記住,於是聰明的人類就發明了域名,像:www.baidu.com、www.google.cn,這樣就親民多了,域名和IP地址一一對應,由瀏覽器負責將域名翻譯成IP地址,這個過程叫做解析

 

二、具體過程及解釋

1、前期工作:開機、打開瀏覽器、輸入網址(比如:www.python.org)

2、將輸入的網址(學名:域名)進行解析

  瀏覽器會先從客戶端系統(也就是你的電腦)查詢域名對應的IP地址,如果找到了,瀏覽器就想這個IP地址發出訪問請求;

  如果找不到對應的IP地址(第一次訪問這個網站的情況),瀏覽器就會發起DNS請求,向DNS服務器(專門負責域名解析的服務器)查詢IP地址,並保存到你的電腦,這時候瀏覽器就可以正常向匹配的服務器,發出訪問請求了。

3、瀏覽器發送HTTP請求

  請求信息通過瀏覽器進行包裝,使其符合HTTP協議(應用層),然後通過傳輸層、網絡層、鏈路層將信息不斷處理,最後將處理後的信息傳到網絡上(上高速),通過網絡傳送到指定的服務器上,對TCP/IP分層管理感興趣的可以瀏覽:,對HTTP感興趣的可以瀏覽:。

4、服務器接收到網絡上傳輸來的請求信息

  服務器端通過TCP/IP各層的信息,最終請求信息中獲取了:是誰要訪問我、它想幹嘛(想看文字、圖片、視頻的頁面,還是想從我這下載文件等等)。

  通過服務器判斷,同意了客戶端的請求,從自己的資源庫裏(系統文件)裏找到相應的資源,或者運行相應的程序,將資源/結果整理成符合HTTP協議的響應信息(攜帶狀態碼),準備發回給客戶端。

  如果服務器沒有同意客戶端的請求,或者客戶端想要的東西/結果,服務器沒有/做不了,那麼服務器也會整理一個符合HTTP協議的響應信息(攜帶狀態碼),準備發回給客戶端。

5、客戶端的瀏覽器通過網絡獲取到服務器傳回的數據,進行解析、渲染後,呈獻給我們。

 

三、附贈:Django的web項目訪問流程

 

生產環境:Linux+Nginx+uWSGI+Django

 

1、首先客戶端請求服務資源,
2、Nginx作爲直接對外的服務接口,接收到客戶端發送過來的http請求,會解包、分析,
  如果是靜態文件請求就根據nginx配置的靜態文件目錄,返回請求的資源,
  如果是動態的請求,nginx就通過配置文件,將請求傳遞給uWSGI;
3、uWSGI 將接收到的包進行處理,並轉發給wsgi,
4、wsgi根據請求調用django工程的某個文件或函數,處理完後django將返回值交給wsgi,
5、wsgi將返回值進行打包,轉發給uWSGI,
6、uWSGI接收後轉發給nginx,nginx最終將返回值返回給客戶端(如瀏覽器)。


*注:不同的組件之間傳遞信息涉及到數據格式和協議的轉換

 

對Django項目部署感興趣的,請瀏覽:

使用Nginx+uwsgi在亞馬遜雲服務器上部署python+django項目完整版(二)——部署配置及相關知識

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章