httpd(Apache)、httpd-2.2、httpd-2.4

下面介紹的是http協議基礎、http協議的報文格式、httpd(Apache)、httpd-2.2、httpd-2.4。


一、http協議基礎 -------------超文本傳輸協議,無狀態,可通過 cookie 機制來進行狀態保存。

1、協議版本

 http協議的版本有:http/0.9、http/1.0、http/1.1。

 http/1.0 ---------支持MIME機制,支持Cache機制,Method機制。

 http/1.1 --------強化了緩存、提出了持久連接機制


 http/1.0 的三種機制解釋如下:

 MIME機制 ------------多用途互聯網郵件擴展

 Cache機制 -----------緩存機制

 Method機制:

    GET --------請求獲取相關資源

    POST -------在資源之後附加的數據

    HEAD -------請求資源的相應首部

    PUT --------請求服務器存儲一個資源

    DELETE -----請求服務器刪除某個資源

    TRACE ------請求服務器回送請求信息,用於故障診斷或檢測

    CONNECT ----保留未被使用

    OPTIONS ----查詢服務器性能,查詢與資源相關的選項和請求資源的需求


 http協議 ------應用層協議,接口 80/tcp

 https協議 -----應用層協議,接口 443/tcp


2、URI -----------統一資源標識符(web上的各種資源都可以用uri來標識)

 URI分爲三部分:

    1)、訪問資源的命名機制

    2)、存放資源的主機名稱

    3)、資源自身的名稱

 URL ------------統一資源【定位】符,可以說URL是URI的子集(URI自身存在的機制)。

 URL是互聯網上,【描述web資源】的特定格式的一組字符串。

 URL由三部分構成:

    1)、協議 ------表資源的提供方式或訪問方式

    2)、主機標識 --------可以是主機名稱,也可以是IP地址

    3)、資源路徑 --------使用某種特定方式實現的路徑映射機制,標識資源的具體位置

 URL的通用格式:scheme://Server[:port]/PATH/TO/SOME_RESOUECE?PARAMETERS=VALUE#FLAGS

    例:http://www.baidu.com/index.html


3、Web資源

 Web上可用的各種資源,如:html文檔,圖片,視頻或音頻片段,應用程序等,都可以使用URI來進行標識。客戶端發送的一次請求,只能請求一個web資源。

(1)、資源分類

 web資源分爲兩類:分爲靜態、動態兩種資源。

    靜態資源:服務器直接發送給客戶端響應的資源。(html文檔、圖片、流媒體、文本、js)

    動態資源:在服務器上需要服務器按照某種方式執行之後生成相應的頁面,再將頁面發送給客戶端響應的資源。(.php、.jsp、.NET、js)

(2)、資源路徑映射 ----------------chroot

 資源服務器的映射方式:DocumentRoot、Alias、vhost docroot、用戶自己的docroot                 

 

 html文檔 -------------超文本標記語言(查詢訪問時使用)

 格式:

  <html>

    <head>

      <title>xxxx</title>

      <meta>

    </head>

    <body>


    </body>

  </html>



4、五種併發響應模型(服務器):

(1)、單進程IO模型:只有一個進程,每次只能響應一個用戶請求,串行響應。

(2)、多進程IO模型:同時啓動多個進程,每個進程可以響應一個用戶請求。

(3)、複用的IO模型:一個進程可以響應多個用戶請求。

    多線程模型:一個進程可以生產多個線程,每個線程響應一個用戶提供請求。

    事件驅動模型:一個進程【直接響應】多個用戶請求。

(4)、複用的多進程IO模型:啓動多個進程,每個進程再分爲多個線程,每個線程響應一個用戶提供請求。

(5)、複用的事件驅動IO模型:啓動多個進程,每個進程直接響應多個用戶請求。


5、web服務器一次完整的http請求的處理過程:

(1)、建立連接 -----三次握手

(2)、接收請求:將客戶端發送來的報文解封后放置於服務進程所在的內存空間。

(3)、處理請求:對於接收到的數據報文,進行解析。

(4)、訪問資源:通過各種IO方式,獲取到用戶請求的資源。

(5、)構建響應報文

(6)、發送響應報文

(7)、記錄訪問日誌



6、http請求處理的連接方式:持久連接、短連接

  持久連接:長連接,keepalive。對於持久連接,有時間限制(15秒)和數量限制(100個)

  非持久連接:短連接


7、http協議的實現方式:httpd、nginx、lighttpd。



二、http協議的報文格式 -----------也稱爲http首部、http頭

1、通用格式:

  起始行

  首部

  ...

  主題


2、請求報文首部 -----------request headers

  <Method> <request-URL> <Version>

  <header: > value

  Host: www.qhdlink.com

  <body>


3、響應報文首部 -----------response headers

  <Version> <Status-Code> <reason-phrase>

  <header: > value

  ...

  <body>


4、對於請求、響應報文首部中,各個字段的定義如下:

Method:請求方法,客戶端希望服務器執行的操作

  GET ----------服務器到客戶端

  HEAD ---------只在乎表頭

  POST ---------客戶端到服務器


Status-Code --------狀態碼,三位十進制整數,公有5類。

  主要作用:是標識請求處理過程的結果狀態。

  五類:

  1xx:代碼爲100-101,信息提示

  2xx:200-206,成功類的相應狀態碼

  3xx:300-305,重定向類相應狀態碼

    301:永久重定向(響應一個提示信息,提示改變位置)

    302:臨時重定向(用於響應新版)

    304:資源未被修改

  4xx:400-415,客戶端錯誤類的響應狀態碼

    401:認證質詢

    403:請求被拒絕(所請求的資源沒有權限訪問、用戶身份錯誤)

    404:請求的資源不存在

  5xx:500-505,服務器端錯誤類的響應狀態碼

    500:服務器內部錯誤

    502:反向代理和上一級服務器通信失敗,或請求超時


reason-phrase ---------狀態短語

  如:Forbidden


header ------首部內容

  格式:Name: Value

  首部分類(5種):通用首部、請求首部、響應首部、實體首部、擴展首部

    1)、通用首部:請求報文和響應報文中都可以使用

      Date -------------創建報文的時間

      Connection -------------連接狀態(長連接、短連接,即keepalive、closed)

      Via ---------------經由(報文傳輸過程中經由的代理節點的IP地址)

      Cache-Control ----------------緩存控制機制

    2)、請求首部:

      Accept ----------------可以接受的媒體形式,MIME(多用途互聯網郵件擴展)

        媒體格式(MIME格式):Major/Minor ------主類型和次類型

        常用的媒體格式有:text/html、text/plaintext、p_w_picpath/jpeg、p_w_picpath/png、application/X-php

      Accept-Charset ------------可以接受的字符集

        如:ASCII碼(單字節碼),Linux每個漢字默認3個字節,Windows每個漢字默認2個字節

      Accept-Encoding ----------可以接受的編碼格式(byte、gzip、deflate)

      Accept-Language ----------可以接受的語言

      Client-IP --------------可接受的客戶端IP地址

      Host -----------請求的服務器名稱,也稱爲主機頭

      Referer -----------從哪跳轉過來,不是直接鍵入的

      User-Agent --------------客戶端代理程序

      Expect -----------期望到的內容(條件使式請求首部,3個)

          If-Modified-Since --------某時間後是否被修改過

          If-Unmodified-Since -------某時間後是否沒被修改過

          If-Match ------本地緩存和服務器ETag是否相同  

    3)、響應首部:消息性首部、安全響應首部

    消息性首部如下:

      Age -----------響應持續的時長;

      Server ----------服務器端軟件程序的名稱、版本

      Accept-Ranges -------------服務器端請求類型範圍,*表所有

      Vary --------------服務器查看的其他首部列表


    安全響應首部如下:

      WWW-Authenticate -----------詢問握手

      Set-Cookie ----------爲客戶端設定Cookie


    4)、實體首部:Allow、Location、Content-Encoding、Content-Language、Content-Location、Content-Type、Content-Length

    Allow --------------請求方法

    Location -------------資源的真正的URL地址

    Content-Location ----------真正實體資源的所在位置


    5)、擴展首部 ---------X開頭



三、httpd(Apache)

httpd -----------應用程序(http daemon)

1、版本

 httpd軟件的版本:httpd-1.3、httpd-2.0、httpd-2.2、httpd-2.4。常用的是httpd-2.4。


2、httpd特性

 httpd的特性:高度模塊化(一個核心+多個模塊)。其中,模塊分爲兩類:動態和靜態。靜態是編譯到核心中的功能,如果要更改靜態模塊,必須更換核心,所以必須重啓。


 httpd的功能特性(7個):

(1)、支持CGI(通用網關接口)

(2)、支持虛擬主機的功能:標識虛擬主機----IP+port+主機名

(3)、支持反向代理 ----------相當於代理服務器,可影響內部拓撲結構

       代理(正向代理) --------相當於代理客戶

(4)、支持負載均衡 ----------基於流量、基於業務、基於請求(相當於集羣)

(5)、可進行路徑別名的設置

(6)、支持身份驗證機制:basic、digest。

(7)、支持大量的第三方模塊

 

3、MPM模塊 ---------多道處理模塊,是併發響應模型的機制。(3種工作方式)

(1)、prefork(默認):是一種多進程IO模型,有一個主進程和多個子進程,一個進程響應一個請求。其子進程,負責處理和響應請求。

    prefork具有主進程、子進程(子進程,處理請求和響應請求)。

(2)、worker:複用的多進程IO模型(多線程),多進程多線程,一個線程響應一個請求。其子進程,負責管理線程,線程負責處理和響應請求。

    worker具有主進程、子進程、線程(線程,處理請求和響應請求)。

(3)、event:複用的IO模型(事件驅動),其子進程處理和響應請求。

    event具有主進程、子進程(子進程,處理請求和響應請求)。

 

 event模型使用:

 在httpd-2.4中,event爲建議使用模型,其前的版本中,event不穩定或沒有加載。

    在centos6 中,採用httpd-2.2,所以採用的是event 測試模型,也不支持動態機制的MPM。

    在centos7 中,採用httpd-2.4,採用成熟的event,支持MPM機制。



四、httpd-2.2

1、httpd-2.2中的服務(centos6)

  啓動服務 ----------------/etc/rc.d/init.d/httpd

    # /etc/rc.d/init.d/httpd {start|stop|restart|reload|status}

    # service httpd {start|stop|restart|reload|status}

  開機自啓:chkconfig [--level 23456] httpd on|off

2、httpd-2.2的程序環境

  配置文件:

    /etc/httpd/conf/httpd.conf ----------主配置文件

    /etc/httpd/conf.d/*.conf ----------輔助配置文件

    /etc/httpd/conf.d/magic -----------實現MIME功能(多用途互聯網郵件擴展)

    /etc/sysconfig/httpd  -------------httpd服務器【啓動腳本】的配置文件

  程序文件:/usr/sbin/httpd

            /usr/sbin/httpd.event

            /usr/sbin/httpd.worker

  日誌文件:/var/log/httpd -----包括訪問日誌和錯誤日誌

  默認站點的文檔和目錄:/var/www/html

  模塊文件的路徑:/usr/lib64/httpd/modules -----------存在符號鏈接文件/etc/httpd/modules


3、httpd-2.2與centos7的httpd-2.4比較:

  啓動服務:/usr/lib/systemd/system/httpd.service

    # systemctl {start|stop|restart|reload|status} httpd[.service]

  開機自啓:

    # systemctl enable|disable httpd.service

    在httpd2.4中,支持靜態模塊,每個MPM模型對應一個模塊。

  配置文件:(多了一種)

    /etc/httpd/conf.modules.d -------------額外的模塊專用的配置文件


  程序文件(二進制文件):---------------/usr/sbin/httpd

    /usr/lib64/httpd/modules/mod_mpm_event.so

    /usr/lib64/httpd/modules/mod_mpm_prefork.so

    /usr/lib64/httpd/modules/mod_mpm_worker.so

    /usr/sbin/apachectl -------------------服務控制命令


4、安裝httpd --------------------httpd、httpd-tools、httpd-devel、httpd-manual

 安裝httpd的兩種方式如下:

   1)、rpm包 -----本地光盤yum源中

   2)、編譯安裝 ------定製新功能,爲了安全,可去除帶有漏洞後門的模塊

 安裝的httpd擁有的四個包:主程序包、httpd的工具包、httpd的開發包、離線幫助文檔。

  # yum list all httpd*


httpd2.2的主配置文件:-------------------/etc/httpd/conf/httpd.conf

 在此配置文件中,所有的配置選項都被稱爲選項,指令格式爲:directive value(駝峯式)。在修改了配置文件中的指令後,可以使用reload使之生效。在httpd2.2 中,如果【更改了監聽的IP地址,則必須重啓服務】。在主配置文件中,所有的指令被分別寫到三個配置部分中


下面是修改配置文件中的指令:(16類)

(1)、修改監聽的地址和端口

  格式:Listen [IP:]PORT

  注意:listen指令可以定義多次,如果省略了IP地址,即 0.0.0.0,意味着httpd服務進程將監聽服務器上配置的所有IP地址。


(2)、持久連接的特性(3個)------------KeepAlive

  持久連接,就是當服務器和客戶端已經建立其tcp連接之後,在完成一次請求之後,連接不斷開,而是等待其他用戶發送請求。

  斷開條件:數量限制、時間限制。

  相關指令:KeepAlive Off|On  ------------------持久連接開啓或關閉

            MaxKeepAliveRequests 100  ----------------最多持久連接數

            KeepAliveTimeout 15  --------------持久連接的時間,默認單位爲秒

            # httpd -t -----------------測試語法結構的對錯

  請求測試:

    # telnet SERV_IP SERV_PORT

    GET /PATH/TO/RESOURCE HTTP/1.1

    Host: SERV_IP

    例:# telnet 172.16.67.1 80 ------------進入Telnet模式,進行請求輸入。

        > GET html HTTP/1.1

        > Host: 172.16.67.1 -------------兩次回車載入


(3)、MPM ------------多道處理模塊

  httpd-2.2的MPM不支持DSO機制,並且event爲測試模式。

  # httpd -M -----------列出所有支持模塊,包括靜態和共享模塊

  # httpd -l -----------查看靜態編譯的模塊


  三個配置文件:/usr/sbin/httpd、/usr/sbin/httpd.event、/usr/sbin/httpd.worker。

  與prefork相關的配置指令:(子進程)

    <IfModule prefork.c>

    StartServers       8  -------------在服務剛啓動時,預先fork幾個子進程

    MinSpareServers    5  --------------最小預留的空閒子進程的數量

    MaxSpareServers   20  -------------最多預留的空閒子進程的數量

    ServerLimit      256  --------------爲MaxClients指定的最大值

    MaxClients       256  ----------------最大的併發訪問量

    MaxRequestsPerChild  4000  -------------------每個子進程處理的最大請求數量

    </IfModule>


  與worker相關的配置指令:(線程)

    <IfModule worker.c>

    StartServers         4  -------------------在服務剛啓動時,預先fork幾個子進程

    MaxClients         300  ------------------並行訪問的上限

    MinSpareThreads     25  -------------------最小預留的空閒線程數量

    MaxSpareThreads     75  -----------------最大預留的空閒線程數量

    ThreadsPerChild     25  -----------------每個進程管理的最大線程數量

    MaxRequestsPerChild  0  ------------------每個子進程處理的最大請求數量

    </IfModule>


(4)、DSO機制 -----------LoadModule

  modules,即/etc/httpd/modules。


(5)、"Main" Server -----------定義主機的基本指令

  格式:ServerName FQDN[:PORT]

        DocumentRoot "/var/www/html"

  配置:

  http://172.16.69.1/test.html ----------路徑映射

  DocumentRoot "/myweb/data"


  例:配置了配置文件後,進行以下操作:

    # mkdir -pv /myweb/data

    # vim /myweb/data/index.html

    重載配置文件

    客戶端訪問到http://172.16.69.1/index.html


(6)、站點資源的訪問控制

  1)、基於文件系統的訪問控制:分爲三類,分別爲:基於【指定目錄】的訪問控制、基於【特定文件】的訪問控制、基於【模式匹配】進行文件的訪問控制。

    基於【指定目錄】的訪問控制,格式如下:

    <Directory "/PATH/TO/SOME_DIR">

      Directive Value

    </Directory>


    基於【特定文件】的訪問控制,格式如下:

    <File "/PATH/TO/SOME_FILE">

      Directive Value

    </File>


    基於【模式匹配】進行文件的訪問控制,格式如下:

    <FileMatch "PATTERN">

      Directive Value

    </FileMatch>


  2)、基於URL路徑進行訪問控制:分爲兩類,分別爲:基於【URL】進行、基於【模式匹配】進行URL路徑訪問。

    基於URL進行,格式如下:

    <Location "/PATH/TO/SOME_URL">

      Directive Value

    </Location>


    基於模式匹配進行URL路徑訪問,格式如下:

    <LocationMatch "URL_PATTERN">

      Directive Value

    </LocationMatch>


  3)、常用的目錄中的訪問控制指令有:各種options指令、AllowOverride指令。

  Options指令:

    Indexes ---------允許索引(一般用於資源下載站點),對於正常的Web站點來說,應禁用此功能。

    FollowSymLinks -------跟蹤符號鏈接

    SymLinksifOwnerMatch -------------只有當子進程的所有者和鏈接文件的所有者爲同一用戶時,纔跟蹤符號鏈接

    ExecCGI ---------允許執行CGI腳本

  

  AllowOverride指令:-----------------控制那些允許放置於 .htaccess 文件中的指令,具有繼承特性。該指令的值設置爲None

    .htaccess的三個配置文件:/myweb/data/.htaccess /myweb/data/p_w_picpaths/.htaccess /myweb/data/admin/.htaccess

  

  Order指令、Allow指令、Deny指令:

    Order指令 ----------定義基於IP地址的訪問控制,規定了訪問控制的檢查順序,allow,deny 和 deny,allow 訪問結果不同。


(7)、web站點主頁文件的定義

  當用戶給出的URL中,【沒有明確指明資源的具體名稱】時,此處會根據此處的文件名去依次匹配,先後順序優先。

  例:

  DirectoryIndex index.html in.html index.html.var


(8)、定義路徑別名

  格式:Alias /URL/ "/PATH/TO/SOME_DIR/"

  在Alias指令格式中,URL右側的"/"相當於後面的路由右側的"/",他們是匹配的。


(9)、日誌功能:錯誤日誌、訪問日誌。

  訪問日誌的各選項解釋:

  %h -----------客戶端的IP地址

  %l ------------登錄名,沒有則爲"-"

  %s ------------狀態信息

  %b ------------資源大小


(10)、離線幫助手冊 ---------------配置文件:/etc/httpd/conf.d/manual.conf(重載之後生效)

  # yum -y install httpd-manual


(11)、基於用戶的訪問控制

  httpd的認證功能:(2種)

    認證質詢機制(響應報文的狀態碼爲 401)-----------需進行身份驗證,先拒絕訪問,進行登錄

    認證 -------客戶端填寫賬戶和密碼,登錄後之後,發送報文

  httpd的認證方式:(2種)

    basic認證 ---------明文認證

    digest認證 --------消息摘要認證

  

  虛擬用戶賬號 ----------該賬號無法進行系統級認證,只能用於訪問服務器上某特定服務的賬戶

  一般來講,虛擬用戶時存放於某特定的數據格式中,如:文本文件、SQL數據庫(寫效率高)、LDAP目錄數據庫(讀效率高)

  安全域 ------需要通過用戶認證才能訪問資源


  htpasswd命令 ---------------------創建用戶/組文件

  常用選項:

  -c 創建用戶賬戶文件(只用於創建第一個,建第二個用戶以後的賬戶不要用-c)

  -m 使用md5加密用戶密碼

  -s 使用sha加密用戶密碼

  -D 刪除用戶


  例:basic認證的配置(定義安全域、創建用戶/組文件)

    1)、定義安全域 

    <Directory "/PATH/TO/SOME_DIR"> ------------基於【虛擬用戶】做身份驗證

      Options None

      AllowOverride None

      Authtype basic

      AuthName "SOME_STRING"

      AuthUserFile "/PATH/TO/HTTP_USER_FILE"

      Require user user1 user2 ...

    </Directory>

    

    <Directory "/PATH/TO/SOME_DIR"> ----------基於【虛擬組】做身份驗證

      Options None

      AllowOverride None

      Authtype basic

      AuthName "SOME_STRING"

      AuthUserFile "/PATH/TO/HTTP_USER_FILE"

      AuthGroupFile "/PATH/TO/HTTP_GROUP_FILE"

      Require group group1 group2 ...

    </Directory>


    2)、創建用戶/組的文件(htpasswd命令) 

    格式:GROUP_NAME: user1 user2 ...


(12)、系統狀態數據查詢:server-status

  # httpd -M | grep status

  ExtendedStatus On|Off -----------開啓或關閉更多的額外系統狀態信息

  例:

  <Location /server-status>

    SetHandler server-status

    Order deny,allow

    Deny from all

    Allow from 172.16

  </Location>


(13)、虛擬主機

  對於每個web站點,都有一個屬於其獨立的標識。Main Server 和虛擬主機不能同時使用。兩個都有的話,Main Server失效,虛擬主機有效。

  站點標識:IP地址、PORT、主機頭(FQDN)

  三種典型的虛擬主機實現方式:

    1)、基於IP地址的虛擬主機 -----每個虛擬主機使用一個獨立的IP地址

    2)、基於PORT端口的虛擬主機 -------每個虛擬主機使用一個端口

    3)、基於主機頭的虛擬主機 ----------每個虛擬主機使用一個獨有的FQDN


  虛擬主機的配置方法:------------在 ./conf.d/ 下進行主機配置

  <VirtualHost IP:80>

    DocumentRoot /www/docs/dummy-host.example.com

    ServerName dummy-host.example.com

  </VirtualHost>

  vhosts-www1.conf


  基於IP地址的配置示例:(2臺虛擬主機)---------------vim /etc/httpd/conf.d/vhost-www1.conf

  # vim /etc/httpd/conf.d/vhost-www1.conf

  # vim /etc/httpd/conf.d/vhost-www2.conf

  /etc/httpd/conf.d/vhosts-www1.conf

    <VirtualHost 172.16.69.1:80>

      DocumentRoot "/myweb/vhosts/www1"

      ServerName www1.qhdlink.com

    </VirtualHost>


  /etc/httpd/conf.d/vhosts-www2.conf

    <VirtualHost 172.16.69.2:80>

      DocumentRoot "/myweb/vhosts/www2"

      ServerName www2.qhdlink.com

    </VirtualHost>

 

  基於端口的配置示例:------------/etc/httpd/conf.d/vhosts-www3.conf

  注意基於端口配置的時候,要指明端口號,不然和沒指明的時候一樣,不是端口的配置。進行端口配置的前提,是需要讓httpd事先監聽於指定的額外端口,即Listen PORT。

  /etc/httpd/conf.d/vhosts-www3.conf

  Listen 60080

  <VirtualHost 172.16.69.1:60080>

    DocumentRoot "/myweb/vhosts/www3"

    ServerName www3.qhdlink.com

  </VirtualHost>

 

  基於FQDN的虛擬主機配置示例:----------------------/etc/httpd/conf.d/vhosts-www4.conf

  主機名成爲關鍵,IP和端口號都可以和前面一致。

  # httpd -t ------檢驗語法

  /etc/httpd/conf.d/vhosts-www4.conf

  NameVirtualHost 172.16.69.1:80

  <VirtualHost 172.16.69.1:80>

    DocumentRoot "/myweb/vhosts/www4"

    ServerName www4.qhdlink.com

  </VirtualHost>


(14)、https的實現 ------------SSL會話是基於IP地址所創建的,【單IP地址】的主機上,僅可以創建一個https虛擬主機。

  1)、爲httpd生成私鑰並簽發證書,步驟如下:

    1).生成私鑰及證書請求

    # mkdir /etc/httpd/ssl

    # cd /etc/httpd/ssl

    # (umask 077; openssl genrsa -out httpd.key 2048)

    # openssl req -new -key httpd.key -out httpd.csr -days 3653

    # scp httpd.csr 172.16.72.1:/tmp

    2).在CA上籤發證書

    CA]# openssl ca -in /tmp/httpd.csr -out certs/httpd.crt -days 3653

    CA]# scp certs/httpd.crt 172.16.69.1:/etc/httpd/ssl

    3).在httpd服務器上清除證書請求文件

    # rm -f httpd.csr


  2)、配置httpd -------------------支持使用SSL,確定已裝載mod_ssl模塊

  # yum -y install mod_ssl

  修改配置文件,修改公鑰和私鑰的安裝位置。

  例:

  /usr/lib64/httpd/modules/mod_ssl.so

  /etc/httpd/conf.d/ssl.conf

  <VirtualHost 172.16.69.1:443>

    DocumentRoot "/myweb/vhosts/ssl"

    ServerName www.qhdlink.com

    SSLCertificateFile /etc/httpd/ssl/httpd.crt

    SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

  </VirtualHost>


(15)、user/group ------------指定以哪個用戶的身份運行httpd服務進程

  格式:

  User apache

  Group apache

      

(16)、mod_deflate模塊 -----------------壓縮頁面,優化傳輸速度

  SetOutputFilter DEFLATE

  

  AddOutputFilterByType DEFLATE text/plain ------------多互聯網郵件擴展類型

  AddOutputFilterByType DEFLATE text/html

  AddOutputFilterByType DEFLATE application/xhtml+xml

  AddOutputFilterByType DEFLATE text/xml

  AddOutputFilterByType DEFLATE application/xml

  AddOutputFilterByType DEFLATE application/x-javascript

  AddOutputFilterByType DEFLATE text/javascript

  AddOutputFilterByType DEFLATE text/css

     

  DeflateCompressionLevel 9 ----------------壓縮級別,1~9,9最高

  BrowserMatch ^Mozilla/4  gzip-only-text/html ------------瀏覽器

  BrowserMatch  ^Mozilla/4\.0[678]  no-gzip

  BrowserMatch \bMSI[E]  !no-gzip !gzip-only-text/html



五、httpd-2.4

1、httpd-2.4具有特性如下:(10個)

(1)、MPM支持DSO機制,以模塊方式加載和卸載

(2)、event MPM 穩定,生產可用

(3)、支持異步IO機制,使得併發傳輸性能提高

(4)、支持沒模塊及每目錄單獨日誌級別定義

(5)、每請求相關的專用配置

(6)、增強版的表達式分析器

(7)、毫秒級的keepalive超時時長

(8)、基於FQDN的虛擬主機無需使用NameVirtualHost指令

(9)、支持用戶自定義變量

(10)、更低的內在開銷

2、httpd-2.4的新模塊(3個):

  mod_proxy_fcgi

  mod_proxy_scgi

  mod_remoteip

  

3、安裝httpd-2.4 ---------centos6中需編譯安裝。

  # yum install httpd

 httpd的配置環境:主配置文件、模塊的配置文件、片段配置文件。

  主配置文件 ---------------/etc/httpd/conf/httpd.conf

  模塊配置文件 -------------/etc/httpd/conf.modules.d/*.conf

  片段配置文件 -------------/etc/httdp/conf.d/*.conf


4、httpd-2.4配置特點(特有):

(1)、切換MPM -----------三個模塊只能有一個生效,不能讓多個MPM同時生效

  編輯:/etc/httpd/conf.modules.d/00-mpm.conf

      LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

      LoadModule mpm_worker_module modules/mod_mpm_worker.so

      LoadModule mpm_event_module modules/mod_mpm_event.so

(2)、基於IP地址的訪問控制

  不再支持Allow、Deny這樣的指令,改用Require指令完成訪問控制功能。

  注意:【默認】情況下,httpd-2.4拒絕所有主機訪問。如果拒絕和允許同時要控制,則所有Require必須放在RequireAny容器中。

  【允許和拒絕】同時要控制,則所有Require指令必須放在RequireAny容器中,具體解釋如下:

  <RequireAny>

    Require all denied

    Require ip 172.16.69.1

  </RequireAny>


  <RequireAny>

    Require all granted

    Require not ip 172.16.69.1

  </RequireAny>


  <RequireAny>

    Require all denied

    Require host qhdlink.com

  </RequireAny>


(3)、虛擬主機

  即便使用基於FQDN方式構建的虛擬主機,也無需再使用NameVirtualHost指令。

  <VirtualHost 172.16.72.1:80>

    DocumentRoot "/myweb/vhosts/www"

    ServerName www.qhdlink.com

    <Directory "/myweb/vhosts/www"

      Options None

      AllowOverride None

      Require all granted

    </Directory>

  <VirtualHost>


(4)、毫秒級的keepalive持久連接 ----------單獨創建文件/etc/httpd/conf.d/keepalive.conf

   /etc/httpd/conf.d/keepalive.conf

   KeepAlive On

   KeepAliveTimeout 500ms --------------支持寫爲 500ms

   MaxKeepAliveRequests 100


  CentOS 7:httpd-2.4

    啓動服務:Systemd Unit文件,/usr/lib/systemd/system/httpd.service

      systemctl {start|stop|restart|reload|status} httpd[.service]


    開機自動啓動或停止服務:

      systemctl enable|disable httpd.service


5、httpd-2.4的程序環境

  啓動服務:/usr/lib/systemd/system/httpd.service

    # systemctl {start|stop|restart|reload|status} httpd[.service]

  開機自啓:

    # systemctl enable|disable httpd.service

    在httpd2.4中,支持靜態模塊,每個MPM模型對應一個模塊。

  配置文件:(多了一種)

    /etc/httpd/conf.modules.d -------------額外的模塊專用的配置文件

    /etc/httpd/conf/httpd.conf ----------主配置文件

    /etc/httpd/conf.d/*.conf ----------輔助配置文件

    /etc/httpd/conf.d/magic -----------實現MIME功能(多用途互聯網郵件擴展)

    /etc/sysconfig/httpd  -------------httpd服務器【啓動腳本】的配置文件

  程序文件(二進制文件):---------------/usr/sbin/httpd

    /usr/lib64/httpd/modules/mod_mpm_event.so

    /usr/lib64/httpd/modules/mod_mpm_prefork.so

    /usr/lib64/httpd/modules/mod_mpm_worker.so

    /usr/sbin/apachectl -------------------服務控制命令

  日誌文件:/var/log/httpd -----包括訪問日誌和錯誤日誌

  默認站點的文檔和目錄:/var/www/html

  模塊文件的路徑:/usr/lib64/httpd/modules -----------存在符號鏈接文件/etc/httpd/modules


6、curl命令 ------------文件傳輸工具

  格式:curl  [options]  [URL...]

  常用選項:

  -A <string> ---------------設置用戶代理髮送給服務器

  --basic ------------------使用HTTP基本認證

  --tcp-nodelay ----------------使用TCP_NODELAY選項

  -e <URL> ------------------來源網址

  --cacert <file> ------------CA證書 (SSL)

  --compressed --------------要求返回的壓縮格式

  -H <line> ---------------自定義首部信息傳遞給服務器

  -I ----------------------只顯示響應報文首部信息

  --limit-rate <rate> --------------設置傳輸速度

  -u <user[:password]> ------------設置服務器的用戶和密碼

  -0 -------------使用http/1.0 


7、elinks命令

  格式:elinks  [OPTION]... [URL]...

  常用選項:

  -dump ------------------------直接將URL的內容輸出至標準輸出 


8、ab命令 ------------壓力測試工具

  常用選項:

  -c -------------併發連接數

  -n -------------請求總數

  -k -------------使用keepalive


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章