- 一次完整的http請求處理過程:
(1) 建立或處理連接配接:接收請求或拒絕請求
(2) 接收請求:
接收來自于網絡的請求封包中對某資源的一次請求的過程;
并發通路響應模型(Web I/O):
單程序I/O結構:啟動一個程序處理使用者請求,而且一次隻處理一個;多個請求被串行響應;
多程序I/O結構:并行啟動多個程序,每個程序響應一個請求;
複用I/O結構:一個程序響應n個請求;
多線程模型:一個程序生成N個線程,每個線程響應一個使用者請求;
事件驅動:event-driven
複用的多程序I/O結構:啟動多個(m)程序,每個程序響應n個請求;
(3) 處理請求:對請求封包進行解析,并擷取請求的資源及請求方法等相關資訊
中繼資料:請求封包首部
(4) 通路資源:擷取請求封包中請求的資源
web伺服器,即存放了web資源的伺服器,負責向請求者提供對方請求的靜态資源,或動态運作後生成的資源;這些資源放置于本地檔案系統某路徑下,此路徑通常稱為DocRoot
/var/www/html/
web伺服器資源路徑映射方式:
(a) docroot
(b) alias
(c) 虛拟主機docroot
(d) 使用者家目錄docroot
(5) 建構響應封包
資源的MIME類型:
顯式分類
魔法分類
協商分類
URL重定向:
web服務建構的響應并非用戶端請求的資源,而是資源另外一個通路路徑;
(6) 發送響應封包
(7) 記錄日志
- http伺服器程式:
httpd (apache)
nginx
lighttpd
應用程式伺服器:
IIS
tomcat, jetty, jboss, resin
webshpere, weblogic, oc4j
- httpd的安裝配置和使用:
httpd: apache
a patchy server =
apache
ASF: apache software foundation
- httpd的特性:
高度子產品化:core + modules
DSO: Dynamic Shared Object
MPM:Multipath Processing Modules
prefork:多程序模型,每個程序響應一個請求;
一個主程序:負責生成n個子程序,子程序也稱為工作程序,每個子程序處理一個使用者請求;即便沒有使用者請求,也會預先生成多個空閑程序,随時等待請求到達;最大不會超過1024個;
worker:多線程模型,每個線程響應一個請求;
一個主程序:生成多個子程序,每個子程序負責生個多個線程,每個線程響應一個請求;
m程序,n線程:m*n
event:事件驅動模型,每個線程響應n個請求;
一個主程序:生成m個子程序,每個程序直接n個請求;
m*n
httpd-2.2: event為測試使用
httpd-.24:event可生産使用
- httpd的功能特性:
虛拟主機
IP、Port、FQDN
CGI:Common Gateway Interface,通用網關接口;
反向代理
負載均衡
路徑别名
豐富的使用者認證機制
basic
digest
支援第三方子產品