天天看點

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>

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、image/jpeg、image/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包 -----本地CD光牒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  ------------------每個子程序處理的最大請求數量

(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">

    </File>

    基于【模式比對】進行檔案的通路控制,格式如下:

    <FileMatch "PATTERN">

    </FileMatch>

  2)、基于URL路徑進行通路控制:分為兩類,分别為:基于【URL】進行、基于【模式比對】進行URL路徑通路。

    基于URL進行,格式如下:

    <Location "/PATH/TO/SOME_URL">

    </Location>

    基于模式比對進行URL路徑通路,格式如下:

    <LocationMatch "URL_PATTERN">

    </LocationMatch>

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

  Options指令:

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

    FollowSymLinks -------跟蹤符号連結

    SymLinksifOwnerMatch -------------隻有當子程序的所有者和連結檔案的所有者為同一使用者時,才跟蹤符号連結

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

  AllowOverride指令:-----------------控制那些允許放置于 .htaccess 檔案中的指令,具有繼承特性。該指令的值設定為None

    .htaccess的三個配置檔案:/myweb/data/.htaccess /myweb/data/images/.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 "/PATH/TO/SOME_DIR"> ----------基于【虛拟組】做身份驗證

      AuthGroupFile "/PATH/TO/HTTP_GROUP_FILE"

      Require group group1 group2 ...

    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

  基于端口的配置示例:------------/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

  基于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

(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

(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>

    Require all granted

    Require not ip 172.16.69.1

    Require host qhdlink.com

(3)、虛拟主機

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

  <VirtualHost 172.16.72.1:80>

    DocumentRoot "/myweb/vhosts/www"

    <Directory "/myweb/vhosts/www"

      Require all granted

  <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的程式環境

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

     本文轉自little_ding 51CTO部落格,原文連結:http://blog.51cto.com/12496428/1966692,如需轉載請自行聯系原作者