web 伺服器功能模組設計(部分實現)

2021-07-25 18:56:28 字數 1113 閱讀 3593

正好這段時間多,公司沒啥專案.做乙個httpserver伺服器玩玩,平時多練練,在專案中開發時才能更加的順手.

每個程式設計師都應該嘗試下寫部落格

目前開源的web伺服器主要有:

http請求庫libcurl

我推薦乙個比較小眾的:

1.先看完libevent.初步理解libevent的源**這種事件驅動的網路框架

暫時先採用c語言版來實現,後面再完善成c++版本.

webserver模組分析和設計

1.命令列解析功能

命令列引數主要有哪些?伺服器偵聽埠,最大客戶端數量,**的根目錄,配置檔案名稱,連線超時時間扥等

2.配置檔案解析(tinyxml庫使用)

配置檔案為伺服器的主配置選項,相同選項,配置檔案的配置將覆蓋命令列的配置.

3.日誌庫

使用glog庫,分等級將日誌輸出.

4.多客戶端支援(網路傳輸層,負責接收連線,資料接收,資料傳送)

連線的處理,請求資料的接收,響應資料的傳送,客戶端請求到來的時候,主線程檢視執行緒池中是否有空閒的工作執行緒,

有:分配任務,沒有:建立新的執行緒.此處採用libevent框架來實現.減少多餘的網路問題.

5.http頭部分析

5.1解析http method,如get,post,head等等

5.2 解析http的版本

5.3 解析uri,即請求資源的位址.

6.http uri的分析設計

請求主機的位置以』/『開始,資源位置的最後乙個』/'後的字串為實際請求的檔名.需要根據檔名來判斷請求資源的型別,對於乙個以"%"開頭的字元,需要進行轉換後使用真正的值,其後面的兩個字元拼成乙個字元.

7.http支援方法的分析設計

暫時僅支援get方法,伺服器對應get方法的處理邏輯分為:

頭部資訊的組織(http response響應的頭部資訊)

檔案內容的傳送

8.http支援cgi的分析設計(查閱http cgi的資料和使用方法)

9.http錯誤處理的分析設計

9.1使用者的請求發生錯誤

9.2伺服器端發生錯誤

9.3網路傳輸過程中發生錯誤時

類設計多客戶端併發支援->網路類,libevent構造網路框架

nginx作為web伺服器的功能模組

1 nginx虛擬主機 2 https的實現 需要編譯ssl模組 cd nginx 1.17.1 yum install y openssl devel 編譯ssl模組需要的依賴包 make cert.pem 製作證書 cp cert.pem usr local nginx conf 證書在 usr...

發布npm功能模組到私有伺服器進行復用

發布 在專案目錄下執行 npm run buildbuid成功後 cd build配置映象位址 到伺服器指定資源路徑位置 npm config set registry http 18000 mm n 登入伺服器 到資源位置處 npm login registry http 18000 mm n 輸...

部分Web伺服器資訊對比

本文參考wikipedia的web伺服器比較頁面的資料,選取了其中自己感興趣的web伺服器的資訊進行了對比,包括,apache http server apache tomcat nginx catty。其中,最後乙個catty完全沒有使用過。近期在使用nginx uwsgi伺服器部署flask應用...