httpd二之主配置文件詳解、測試工具、壓力測試ab

本文主要講述httpd的主配置文件中可以配置的選項以及參數,以2.2系列的爲主,在http2.4以後會添加一些新的功能和模塊,配置文件可能也會有一些差別,關於2.4的配置文件將在後續推出,敬請期待!

  如果httpd是yum安裝或者是rpm包安裝的話,主配置文件會默認保存在/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf爲主配置文件的輔助性配置文件

1、監聽套接字

 Listen [IP:]port

  此指令可以出現多次,用於指定監聽多個不同的套接字,IP地址可以省略,如果IP地址省略則表示監聽在本機所有的ip地址上

2、配置實用Keepalive,主要是配置保持連接中的超時時間和最大連接數

  KeepAlive {On|Off}

   KeepAliveTimeout 2 超時時間爲2s,單位默認爲s

   MaxKeepAliveRequests 50 最大連接數

3.MPM,爲多道處理模塊

   prefork:一個進程響應一個請求

   worker:一個進程生成多個線程,一個線程響應一個請求

   event:一個進程同事響應多個請求,但不會生成線程

   http -l 查看編譯進內核的模塊

   如果向使用不同的MPM,直接修改文件/etc/sysconfig/httpd文件中的HTTPD項即可

    <IfModule preforck.c> 判斷模塊是否存在

       StartServers  默認啓動的工作進程數

       MinSpareServers 最少空閒進程數

       MaxSpareServers 最大空閒進程數

       ServerLimit  最大活動進程數

       MaxClients  最大併發連接數,最多允許發起的連接請求個數

       MaxRequestsPerChild 每個子進程在生命週期內最大允許服務的請求個數

    </IfModule>

     <IfModule worker.c>

        StartServers 默認啓動的工作進程數

       MaxClients 最大併發連接數

       MinSpareThreads 最少空閒線程數

       MaxSpareThreads 最多空閒線程數

       ThreadsPerChild 每個自己進程生成的線程數

       MaxRequestsPerChild 每個子進程在生命週期內最大允許服務的請求個數

     </IfModule>

4.DOS模塊的加載方式,動態模塊

     LoadModule module_name /path/to/module

      可以使用絕對路徑,也可以使用相對路徑,如果使用相對路徑,則是相對於ServerRoot所定義的位置而言的

     httpd -m 列出所有已加載的DOS模塊與非DOS模塊

5.配置站點根目錄

     DocumentRoot /path/to/somewhere

       只能使用絕對路徑

6.頁面訪問屬性

    <Direcotry "/path/to/somewhere">

        Options 選項

          Indexes:缺少指定的默認主頁時,允許將目錄中的所有文件以列表形式返回給用戶,危險:慎用

          FollowsymLinks:允許跟隨符號鏈接所指向的歲暗示文件

          None:所有的都不啓用

          All: 所有的都啓用

          ExecCGI: 允許使用mod_cgi模塊執行CGI腳本

          Includes: 允許mod_include模塊實現服務器端包含

          IncludesNOEXEC:允許包含但不允許執行CGI腳本

          MultiViews:允許使用mod_negotication實現內容協商

          SymLinksIfOwnerMatch:在鏈接文件屬主屬組與原始文件的屬主屬組相同時,允許跟隨符號連接所指向的原始文件

     </Direcotry>

7.基於主機的訪問控制(2.2系列的配置)

      <Direcotry "/path/to/somewhere">

          Options

          AllowOverride

              None 不禁用下面選項

         Order 次序,寫在後面的爲默認

             allow,deny: 沒有允許的都拒絕

             deny,allow:沒有拒絕的都允許

         Allow from   允許通過的主機

         Deny from    拒絕通過的主機

              可以是單獨的ip地址,也可以是一個網段

               192.168.0

                192.168.0.0

                192.168.0.0/24

                192.168.0.0/255.255.255.0

                 表示的都爲192.168.0網段

     </Direcotry>

        如果都匹配或都不匹配時則以默認的爲準,否則以匹配到的爲準

8.定義默認主頁面

     DirectoryIndex

      查詢順序爲依次查詢

9.用戶目錄

    如果期望讓每個用戶都可以創建個人站點,基於http://Sevrer_IP/~Username/

        userdir disablied:禁止

       userdir public_html: 是指用戶家目錄下的目錄名稱,所有位於此目錄中的文件均可以通過前述的訪問路徑進行訪問

         用戶的家目錄得賦予運行http進程的用戶擁有執行權限,可以通過setfacl -m來進行設置

10.配置日誌功能

      access.log 訪問日誌,其需要記錄的內容需要自定義

      error.log 錯誤日誌,

   訪問日誌:

       CustomLog "/path/to/log_file" LogFormat

     LofFormat定義的日誌格式,只解釋最常用的一種

       "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""

         %h: 客戶端地址

        %l:遠程的登陸名,通常爲-

        %u: 認證時的遠程用戶名,通常爲-

        %t: 接收到的請求時的時間,爲標準英文格式時間+時區

        \":表示轉義,顯示"

         %r:請求報文的起始行

        %>s: 響應狀態碼

        %b:以字節響應報文的長度,不包含頭報文

        %{Referer}i:記錄指定請求報文首部的內容

        %{User-Agent}i:用戶使用的工具      

      詳情請參考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

11.路徑別名

     Alias /alias/ "/path/to/somewhere"

      意味着訪問http://Server_IP/alias時,其頁面文件來自於/path/to/somewhere中

12.指定默認的字符集

      AddDefaultCharset

13.腳本路徑別名(CGI接口)

     CGI:Common Gateway Interface(通用網關接口)使web可以跟一個應用程序進行通信,從通信環境中獲得結果,前提必須加載mod_alias和mod_cgi模塊

    一般在第一行寫入 echo “Content-Type:text/html”

    ScriptAlias /URL/ "/path/to/somewhere" somewhere下的文件可以被執行

    格式一般爲

      cat << EOF

          Content-Type:text/html

          <pre>

            The Time is : `date`

          </pre>

        EOF

14.基於用戶的訪問控制

    虛擬用戶:不是系統上的用戶,只是爲了獲取某種特定的資源烈性的一種虛擬用戶

    可以基於文件、SQL數據庫、DBM、ldap認證

    認證類型(auth)

      basic:基本認證,賬號和密碼以明文發送

      digest:摘要認證,hash編號以後再發送

    認證提供者(authentiation provide):賬號和密碼的存放位置

    授權機制(authorization):根據什麼進行授權

案例:基於文件,做基本認證根據用戶和組進行授權

  1、編輯配置文件,爲需要認證的目錄配置認證機制

  <Directory "/www/htdocs/fin">

       options None

       AllowOverride AuthConfig 使用認證配置

      AuthType Basic 使用基本認證

      AuthName "Private Area" 質詢時標題

      AuthUserFile /etc/http/conf/.htpasswd  密碼的存放位置

      Require vaild-user 可訪問的用戶

   </Directory>

   2、使用htpsswdm命令使用生成認證庫

    htpasswd

     -c 創建密碼,創建第一個用戶時使用

    htpasswd -c -m /etc/http/conf/.htpasswd tom

     -m MD5格式存放

    -b 批量模式

    -D 刪除用戶

  3、基於組認證

  <Directory "/www/htdocs/fin">

       options None

       AllowOverride AuthConfig 使用認證配置

      AuthType Basic 使用基本認證

      AuthName "Private Area" 質詢時標題

      AuthgroupFile /etc/http/conf/.htpasswd  密碼的存放位置

      Require group GroupName  可訪問的用戶

  </Directory>

      先創建用戶,在創建組

     組文件:

       組名:用戶1 用戶2 用戶3

15.虛擬主機

     一個物理服務器提供多個站點;使用虛擬要先取消中心主機

     基於不同的IP實現不同的虛擬主機:變化IP

      基於不同的port實現不同的虛擬主機:變化port

      基於不同的主機名實現不同的虛擬主機:變化ServerName的值

     通過請求報文中的HOST來實現不同的虛擬主機的訪問

      <VirtualHost IP:port>

        SeverName

        DocumentRoot ""

         <Directory "">

         </Directory>

        ServerAlias

        ServerAdmin

       </VirtualHost>

      虛擬主機可以單獨配置用戶認證、訪問日誌、錯誤日誌、別名、腳本別名等

16.https協議,監聽在tcp的443端口

      X509.3證書格式

         證書格式的版本號

         證書序列號

         證書籤名算法

         證書頒發者

         有效期

         持有者的名稱

         持有者的公鑰

         CA的ID

          持有者的ID

          其他擴展信息

            基本約束

            證書策略

            密鑰的使用限制

         CA簽名

   ssl握手要完成的工作

       交換協議版本號

       選擇一個雙方都支持的加密方式

       對兩端實現身份驗證

       密鑰交換

    SSL會話基於IP地址進行:不支持在基於主機名的虛擬主機上實現

    客戶端驗證服務器端證書時:

        日期檢查:證書是否在有效期內

        證書頒發者的可信度

        證書的簽名檢測:

        持有者的身份檢測:

   httpd:基於mod_ssl模塊實現對於ssl的支持

    步驟:

      1)、準備好服務器的私鑰和證書

      2)、安裝mod_ssl模塊

           yum -y install mod_ssl

       3)、配置/etc/httpd/conf.d/ssl.conf

            配置基於ssl的虛機主機

              ServerName

               DocunmentRoot

            配置證書和私鑰

              SSLCertificatFile 證書文件

              SSLCertificatKeyFile 密鑰文件

       4)、重啓httpd服務

       5)、測試        

          openssl s_client

          -connet:驗證的地址:端口

         -CAfile:CA證書的路徑

17.服務器status頁面,

     內生的status信息,且此信息可以通過web予以顯示出來

     基於目錄的訪問屬性

        <Directory [~] "">

         </Directory>

      基於URL訪問屬性

        <Location [~] "">

         </Location>

      基於單個文件的訪問屬性

        <File [~] "">

         </File>

       也可以使用<LocationMatch "" > </LocationMatch>來實現正則表達式的配置

      如果要配置其屬性的URL能映射到牟文建系統路徑,建議使用Directory

       處理器:當問及被調用時,Apache內部表現形式,一般每種文件類型都有其隱式處理器,否則需要自己定義

      顯示的定義使用的處理器:SetHandler

         <Location /URL>

               SetHandler server-status

         </Location>

         其也可以定義訪問控制,包括基於IP的認證和基於用戶的認證

  實例:

      <Location /server-status>

          SetHandler sever-status

          AuthType Basic

          AuthName "Sever Status"

          AuthUserFile "/etc/http/conf/.htpasswd"

          Require valid-user

          Order deny,allow

          Allow from all

       </Location>

18、使用mod_deflate模塊壓縮頁面優化傳輸速度,可以寫爲一行,也可以寫多行,默認爲gzip

   SetOutputFilter DEFLATE

   <IfModule mod_deflate.c>

   # Restrict compression to these MIME types

     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


   # Level of compression (Highest 9 - Lowest 1)默認爲6

       DeflateCompressionLevel 9

   # Netscape 4.x has some problems.

       BrowserMatch ^Mozilla/4 gzip-only-text/html

   # Netscape 4.06-4.08 have some more problems

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

   # MSIE masquerades as Netscape, but it is fine

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

   </IfModule>

18、資源限定

    軟限制:可以超出的限制,但僅能超出一定時長

    硬限制:絕對不能超出的限制

    ulinit:只能修改軟連接

       -n [N]:顯示或修改能打開的最大的文件句柄數

       -u [N]:顯示或修改能打開的最大進程數

    如果要修改硬限制

      /etc/security/limits.conf或者配置tc/security/limits.d/*.conf

     格式爲

       對誰進行限制   類型 要限制的選項  值

測試工具

 curl是基於URL語法在命令行方式下工作的文件傳輸工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等協議。curl支持HTTPS認證,並且支持HTTP的POST、PUT等方法, FTP上傳, kerberos認證,HTTP上傳,代理服務器, cookies, 用戶名/密碼認證, 下載文件斷點續傳,上載文件斷點續傳,,http代理服務器管道( proxy tunneling), 甚至它還支持IPv6, socks5代理服務器,,通過http代理服務器上傳文件到FTP服務器等等,功能十分強大。

 curl的常用選項:


  -A/--user-agent <string> 設置用戶代理髮送給服務器,即告訴服務器瀏覽器爲什麼

  -basic 使用HTTP基本驗證

  --tcp-nodelay 使用TCP_NODELAY選項

  -e/--referer <URL> 來源網址,跳轉過來的網址

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

   --compressed 要求返回是壓縮的形勢,如果文件本身爲一個壓縮文件,則可以下載至本地

  -H/--header <line>自定義頭信息傳遞給服務器

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

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

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

  -0/--http1.0 使用HTTP 1.0

測試工具

ab工具的初步使用

  -c 模擬的併發數

  -n 模擬的總請求數

 一般併發數應該小於等於請求數

 http_load webbench seige(只做參考)

http的擴展功能

 apachectl

     Apache HTTP服務控制工具

  ab

     Apache HTTP服務器性能測試工具

  apxs

     Apache 擴展工具

  configure

      配置源代碼

  dbmmanage

      爲基本認證創建和更新DBM格式的用戶認證文件

  htcacheclean

      清理磁盤緩存

  htdigest

      爲摘要認證創建和更新用戶認證文件。

  htdbm

     操作 DBM 密碼數據庫。

  htpasswd

     爲基本認證創建和更新用戶認證文件。

  httxt2dbm

     爲 RewriteMap 創建 dbm 文件。

  logresolve

      將 Apache 日誌文件中的 IP 地址解析到主機名稱。

  rotatelogs

      不關閉 Apache 而切換日誌文件。

  suexec

       執行外部程序前切換用戶。


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