HTTP服務理論 Apache

2021-08-21 19:31:43 字數 4124 閱讀 6832

在建立通訊連線的每一端,程序間的傳輸要有兩個標誌:

ip位址和埠號,合稱為套接字位址 socket address

客戶機套接字位址定義了乙個唯一的客戶程序

伺服器套接字位址定義了乙個唯一的伺服器程序

ip+埠號=套接字(socket address)

socket type:根據使用的傳輸層協議

sock_stream:流,tcp套接字,可靠地傳遞、面向連線

sock_dgram:資料報,udp套接字,不可靠地傳遞、無連線

http協議:超文字傳輸協議(處理後的文字叫做超文字,早期稱呼)

html:超文字的標記語言,程式語言

www.w3school.com.cn

並行連線:通過多條tcp連線發起併發的http請求

持久連線:keep-alive,長連線,重用tcp連線,以消除連線和關閉的時延,以事務個數和時間來決定是否關閉連線

管道化連線:通過共享tcp連線發起併發的http請求

復用的連線:交替傳送請求和響應報文(實驗階段)

uri:統一資源標識

url:統一資源定位符

urn:統一資源命名

1、建立連線:接收或拒絕連線請求

2、接收請求:接收客戶端請求報文中對某資源的一次請求的過程

web訪問響應模型(web i/o)

單程序i/o模型:啟動乙個程序處理使用者請求,而且一次只處理乙個,多個請求被序列響應

多程序i/o模型(prefork):並行啟動多個程序,每個程序響應乙個連線請求

復用i/o結構:啟動乙個程序,同時響應n個連線請求

實現方法:多執行緒模型和事件驅動

多執行緒模型:乙個程序生成n個執行緒,每執行緒響應乙個連線請求

事件驅動:乙個程序處理n個請求

復用的多程序i/o模型(worker):啟動m個程序,每個程序響應n個連線請求,同時接收m*n個請求

3、處理請求:伺服器對請求報文進行解析,並獲取請求的資源及請求方法等相 關資訊,根據方法,資源,首部和可選的主體部分對請求進行處理

4、訪問資源: 伺服器獲取請求報文中請求的資源web伺服器,即存放了web資源的伺服器, 負責向請求者提供對方請求的靜態資源,或動態執行後生成的資源

5、構建響應報文:

一旦web伺服器識別除了資源,就執行請求方法中描述的動作,並返回響應報文。響應報文中 包含有響應狀態碼、響應首部,如果生成了響應主體的話,還包括響應主體

1)響應實體:如果事務處理產生了響應主體,就將內容放在響應報文中回送過去。響應報文中通常包括:

描述了響應主體mime型別的content-type首部

描述了響應主體長度的content-length

實際報文的主體內容

2)url重定向:web服務構建的響應並非客戶端請求的資源,而是資源另外乙個訪問路

永久重定向: 響應**:301

臨時重定向: 響應**:302

3)mime型別:web伺服器要負責確定響應主體的mime型別。多種配置伺服器的方法可將mime型別與資源管理起來

魔法分類:apache web伺服器可以掃瞄每個資源的內容,並將其與乙個已知模式表(被稱為魔法檔案)進行匹配,以決定每個檔案的mime型別。這樣做可能比較慢,但很方便,尤其是檔案沒有標準副檔名時

顯式分類:可以對web伺服器進行配置,使其不考慮檔案的副檔名或內容,強制特定檔案或目錄內容擁有某個mime型別

型別協商: 有些web伺服器經過配置,可以以多種文件格式來儲存資源。在這種情況下,可以配置web伺服器,使其可以通過與使用者的協商來決定使用哪種格式(及相關的mime型別)"最好"

6、傳送響應報文:

web伺服器通過連線傳送資料時也會面臨與接收資料一樣的問題。伺服器可能有很多條到各個客戶端的連線,有些是空閒的,有些在向伺服器傳送資料,還有一些在向客戶端回送響應資料。伺服器要記錄連線的狀態,還要特別注意對持久連線的處理。對非持久連線而言,伺服器應該在傳送了整條報文之後,關閉自己這一端的連線。對持久連線來說,連線可能仍保持開啟狀態,在這種情況下,伺服器要正確地計算content-length首部,不然客戶端就無法知道響應什麼時候結束了

7、記錄日誌:

最後,當事務結束時,web伺服器會在日誌檔案中新增乙個條目,來描述已執行的事務

特性高度模組化:核心+模組

dso:動態加/解除安裝

mpm:多路處理模組

mpm工作模式

prefork:多程序i/o模型,每個程序響應乙個請求,預設模型

乙個主程序:生成和**n個子程序,建立套接字,不響應請求

多個子程序:工作work程序,每個子程序處理乙個請求;系統初始時,預先生成多個空閒程序,等待請求,最大不超過1024個

worker:復用的多程序i/o模型,多程序多執行緒,iis使用此模型

乙個主程序:生成m個子程序,每個子程序負責生個n個執行緒,每個執行緒響應

乙個請求,併發響應請求:m*n

event:事件驅動模型(worker模型的變種)

乙個主程序:生成m個子程序,每個程序直接響應n個請求,併發響應請求:m*n,有專門的執行緒來管理這些keep-alive型別的執行緒,當有真實請求時,將請求傳遞給服務執行緒,執行完畢後,又允許釋放。這樣增強了高併發場景下的請求處理能力

cgi:通用閘道器介面

正向**:離客戶端近,有快取功能

反向**:離服務端近,有排程功能

負載均衡

路徑別名

豐富的使用者認證機制

支援第三方模組

httpd配置檔案詳解

centos7更改html目錄必須授權

documentroot "path"

require all granted #授權

serverroot "/etc/httpd" #服務所在目錄,包括配置檔案、模組等

listen 80 #監聽埠

include conf.modules.d/*.conf #允許配置檔案中包含其他配置檔案

user apache #該服務的執行使用者

group apache #該服務的執行組

serveradmin root@localhost #客戶端的錯誤訊息包含該郵箱

allowoverride none #.htaccess檔案無效

require all denied #訪問無條件拒絕

documentroot "/var/www/html" #伺服器預設虛擬主機路徑

allowoverride none #不寫預設為none

require all granted #訪問無條件允許

options indexes followsymlinks #遵循此目錄中的符號鏈結

allowoverride none

require all granted

directoryindex index.html #虛擬主機路徑後不新增檔案時預設訪問該檔案

require all denied

errorlog "logs/error_log" #定義該服務工作目錄下的錯誤日誌路徑和名稱

loglevel warn #調整錯誤日誌記錄中的詳細程度和格式定義

logformat "%h %l %u %t \"%r\" %>s %b \"%i\" \"%i\"" combined

logformat "%h %l %u %t \"%r\" %>s %b" common

logformat "%h %l %u %t \"%r\" %>s %b \"%i\" \"%i\" %i %o" combi

nedio

customlog "logs/access_log" combined #請求記錄日誌

scriptalias /cgi-bin/ "/var/www/cgi-bin/" #別名設定

allowoverride none

options none

require all granted

typesconfig /etc/mime.types

addtype text/html .shtml

addoutputfilter includes .shtml

adddefaultcharset utf-8

mimemagicfile conf/magic

enablesendfile on #使用核心sendfile支援將檔案傳遞給客戶端

includeoptional conf.d/*.conf

Apache伺服器SSL證書安裝https

apache伺服器ssl證書安裝https 2020 2 9 1 如果無 etc httpd ssl 目錄,可通過 命令列建立,再進行第二步。2 如果有 etc httpd ssl 目錄,將已獲取到的1 root bundle.crt證書檔案 2 www.cloud.com.crt證書檔案以及3 w...

訪問Apache伺服器自動跳轉到https協議

apache是世界使用排名第一的web伺服器軟體。它可以執行在幾乎所有廣泛使用的計算機平台上,由於其跨平台和安全性被廣泛使用,是最流行的web伺服器端軟體之一。它快速 可靠並且可通過簡單的api擴充,將perl python等直譯器編譯到伺服器中。類似的還有nginx tomcat等 htacces...

Apache服務(三)Apache服務支援的語言

1.html 預設支援的語言 2.php 1 編輯php的預設測試頁 退出儲存後開啟瀏覽器檢視什麼都檢視不到 2 yum install php y 安裝php軟體 systemctl restart httpd 重啟服務 再次檢視可以檢視到藍色頁面 註冊的介面cgi 普通閘道器介面 網路的語言裝換...