apache apache介紹 apache的特性 apache的功能 apache優缺點 httpd介紹 https :http over ssl ...
apache
apache介紹
apache是個開源的網頁伺服器,也是個模塊化的伺服器。
apache可以支持SSL技術,支持多個虛擬主機。
apache是以進程為基礎的架構,進程要比線程消耗更多的系統開支,不太適合多處理器環境,因此在一個apache web 站點擴容時,通常是增加伺服器或擴充集群節點而不是增加處理器。
apache的特性
1.支持HTTP/1.1通信協議
2.擁有簡單而強有力的基於文件的配置過程
3.支持通用網關介面
4.支持基於IP和基於功能變數名稱的虛擬主機
5.支持多種方式的HTTP認證
6.集成Perl處理模塊
7.集成代理伺服器模塊
8.支持實時監視伺服器狀態和定製伺服器日誌
9.支持伺服器端包含指令(SSI)
10.支持安全Socket層(SSL)
11.提供用戶會話過程的跟蹤
12.支持FastCGI
13.通過第三方模塊可以支持JavaServlets
apache的功能
虛擬主機
IP 、Port 、FQDN
CGI :Common Gateway Interface ,通用網關介面
反向代理
負載均衡
路徑別名
豐富的用戶認證機制
basic
digest
支持第三方模塊
apache優缺點
apache的優點
rewrite ,比nginx的rewrite 強大
rewrite是一種伺服器的重寫脈衝技術,它可以使得伺服器可以支持 URL 重寫,它還可以實現限制特定IP訪問網站的功能。
模塊超多,基本想到的都可以找到
少bug ,nginx 的bug相對較多
超穩定
需要性能的web服務就用nginx ,如果不需要性能只求穩定那就apache
apache適合做動態,穩定且功能強
apache的缺點
apache相對於nginx占用的記憶體及資源較多
apache的抗併發能力沒有nginx強,apache處理請求是採用阻塞型的。
apache穩定性好但性能沒有nginx好。
httpd介紹
1》httpd
20世紀90年代初,國家超級電腦應用中心NCSA開發,1995年開源社區發佈apache (a patchy server)
ASF:apache software foundation
FSF:Free Software Foundation
2》特性:
高度模塊化:core + modules
DSO: Dynamic Shared Object 動態加/卸載
MPM:multi-processing module 多路處理模塊
3》MPM工作模式
1)prefork:
多進程I/O 模型,每個進程響應一個請求,預設模型。
一個主進程:
生成和回收n個子進程,創建套接字,不響應請求。
多個子進程:
工作work進程,每個子進程處理一請求。
系統初始時,預先生成多個空閑進程,等待請求,最大不超過1024個。
![](https://images2018.cnblogs.com/blog/1250974/201802/1250974-20180223114705013-2104636226.png)
2)worker:
復用的多進程I/O 模型, 多進程多線程,IIS 使用此模型。
一個主進程:
生成m個子進程,每個子進程負責生成n個線程,每個線程響應一個請求,併發響應請求為m*n。
![](https://images2018.cnblogs.com/blog/1250974/201802/1250974-20180223114716219-612945086.png)
3)event:
事件驅動模型(worker模型的變種)
一個主進程:
生成m個子進程,每個進程直接響應n個請求,併發響應請求:m*n。
有專門的線程來管理這些keep-alive 類型的線程,當有真實請求時,將請求傳遞給服務線程,執行完畢後,又允許釋放。
這樣增強了高併發場景下的請求處理能力。
在centos6中httpd-2.2的event是測試版,在centos7中httpd-2.4的event是穩定版。
![](https://images2018.cnblogs.com/blog/1250974/201802/1250974-20180223114728163-1259293637.png)
4》進程角色
![](https://images2018.cnblogs.com/blog/1250974/201802/1250974-20180223114741123-1222132506.png)
5》httpd功能特性
虛擬主機
IP 、Port 、FQDN
CGI :Common Gateway Interface ,通用網關介面
反向代理
負載均衡
路徑別名
豐富的用戶認證機制
basic
digest
支持第三方模塊
6》httpd安裝
版本:
CentOS 6: 2.2
CentOS 7: 2.4
安裝方式:
rpm :centos 發行版,穩定,建議使用
編譯:定製或特殊需求
https :http over ssl
1》SSL 會話的簡化過程
(1) 客戶端發送可供選擇的加密方式,並向伺服器請求證書
(2) 伺服器端發送證書以及選定的加密方式給客戶端
(3) 客戶端取得證書併進行證書驗證
如果信任給其發證書的CA
(a) 驗證證書來源的合法性,用CA 的公鑰解密證書上數字簽名
(b) 驗證證書的內容的合法性:完整性驗證
(c) 檢查證書的有效期
(d) 檢查證書是否被吊銷
(e) 證書中擁有者的名字,與訪問的目標主機要一致
(4) 客戶端生成臨時會話密鑰(對稱密鑰),並使用伺服器端的公鑰加密此數據發送給伺服器,完成密鑰交換
(5) 服務用此密鑰加密用戶請求的資源,響應給客戶端
註意:SSL 是基於IP地址實現, 單IP的主機僅可以使用一個https
2》https 實現,配置httpd支持https
(1) 為伺服器申請數字證書
測試:通過私建CA發證書
(a)創建私有CA
(b)在伺服器創建證書簽署請求
(c)CA 簽證
(2) 配置httpd 支持使用ssl
yum -y install mod_ssl
配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot
ServerName
SSLCertificateFile
SSLCertificateKeyFile
(3) 測試基於https 訪問相應的主機
openssl s_client [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]
3》http 重定向https
將http 請求轉發至https 的URL
重定向
Redirect [status] URL-path URL
status 狀態:
Permanent:Returns a permanent redirect status(301) indicating that the resource has movedpermanently
Temp:Returns a temporary redirect status (302).This is the default
示例:
Redirect temp / https://www.magedu.com/
4》HSTS
HSTS:HTTP Strict Transport Security
伺服器端配置支持HSTS 後,會在給瀏覽器返回的HTTP 首部中攜帶HSTS 欄位。
瀏覽器獲取到該信息後,會將所有HTTP 訪問請求在內部做307 跳轉到HTTPS ,而無需任何網路過程。
HSTS preload list
是Chrome 瀏覽器中的HSTS 預載入列表,在該列表中的網站,使用Chrome 瀏覽器訪問時,會自動轉換成HTTPS 。
Firefox 、Safari、 Edge 瀏覽器也會採用這個列表。
實現HSTS 示例:
vim /etc/httpd/conf/httpd.conf
Header always set Strict-Transport-Security "max-age=15768000"
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
5》httpd 自帶的工具程式
htpasswd :basic 認證基於文件實現時,用到的賬號密碼文件生成工具
apachectl :httpd 自帶的服務控制腳本,支持start 和stop
apxs :httpd-devel 包提供,擴展httpd 使用第三方模塊工具
rotatelogs :日誌滾動工具
access.log -->
access.log, access.1.log -->
access.log, acccess.1.log, access.2.log
suexec :訪問某些有特殊許可權配置的資源時,臨時切換至指定用戶身份運行
ab:apache benchmark
6》httpd 的壓力測試工具
ab, webbench, http_load, seige
Jmeter開源
Loadrunner商業,有相關認證
tcpcopy:網易,複製生產環境中的真實請求,並將之保存
ab [OPTIONS] URL
來自httpd-tools包
-n :總請求數
-c :模擬的並行數
-k :以持久連接模式測試
ulimit –n # 調整能打開的文件數