apache

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優缺點nginx

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 #  調整能打開的文件數
相關文章
相關標籤/搜索