apache是個開源的網頁服務器,也是個模塊化的服務器。 apache能夠支持SSL技術,支持多個虛擬主機。 apache是以進程爲基礎的架構,進程要比線程消耗更多的系統開支,不太適合多處理器環境,所以在一個apache web 站點擴容時,一般是增長服務器或擴充集羣節點而不是增長處理器。
1.支持HTTP/1.1通訊協議 2.擁有簡單而強有力的基於文件的配置過程 3.支持通用網關接口 4.支持基於IP和基於域名的虛擬主機 5.支持多種方式的HTTP認證 6.集成Perl處理模塊 7.集成代理服務器模塊 8.支持實時監視服務器狀態和定製服務器日誌 9.支持服務器端包含指令(SSI) 10.支持安全Socket層(SSL) 11.提供用戶會話過程的跟蹤 12.支持FastCGI 13.經過第三方模塊能夠支持JavaServlets
虛擬主機 IP 、Port 、FQDN CGI :Common Gateway Interface ,通用網關接口 反向代理 負載均衡 路徑別名 豐富的用戶認證機制 basic digest 支持第三方模塊
apache優缺點nginx
apache的優勢 rewrite ,比nginx的rewrite 強大 rewrite是一種服務器的重寫脈衝技術,它可使得服務器能夠支持 URL 重寫,它還能夠實現限制特定IP訪問網站的功能。 模塊超多,基本想到的均可以找到 少bug ,nginx 的bug相對較多 超穩定 須要性能的web服務就用nginx ,若是不須要性能只求穩定那就apache apache適合作動態,穩定且功能強 apache的缺點 apache相對於nginx佔用的內存及資源較多 apache的抗併發能力沒有nginx強,apache處理請求是採用阻塞型的。 apache穩定性好但性能沒有nginx好。
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個。  2)worker: 複用的多進程I/O 模型, 多進程多線程,IIS 使用此模型。 一個主進程: 生成m個子進程,每一個子進程負責生成n個線程,每一個線程響應一個請求,併發響應請求爲m*n。  3)event: 事件驅動模型(worker模型的變種) 一個主進程: 生成m個子進程,每一個進程直接響應n個請求,併發響應請求:m*n。 有專門的線程來管理這些keep-alive 類型的線程,當有真實請求時,將請求傳遞給服務線程,執行完畢後,又容許釋放。 這樣加強了高併發場景下的請求處理能力。 在centos6中httpd-2.2的event是測試版,在centos7中httpd-2.4的event是穩定版。  4》進程角色  5》httpd功能特性 虛擬主機 IP 、Port 、FQDN CGI :Common Gateway Interface ,通用網關接口 反向代理 負載均衡 路徑別名 豐富的用戶認證機制 basic digest 支持第三方模塊 6》httpd安裝 版本: CentOS 6: 2.2 CentOS 7: 2.4 安裝方式: rpm :centos 發行版,穩定,建議使用 編譯:定製或特殊需求
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 # 調整能打開的文件數