apache 2.2 配置參數詳解

安裝httpdjavascript

    yum -y install  httpdphp

    服務腳本:/etc/rc.d/init.d/httpdcss

       腳本配置文件:/etc/sysconfig/httpdhtml

    運行目錄:/etc/httpdjava

    配置文件:web

     主配置文件:/etc/httpd/conf/httpd.conf正則表達式

     擴展配置:/etc/httpd/conf.d/*.conf算法

     Socket:80/tcp,443/tcp數據庫

     文檔根目錄:/var/www/htmlapache

         CGI:/var/www/cgi-bin/



日誌滾動:

    日誌切割

    時間、空間


Docroot:文檔根目錄


配置文件:

    /etc/httpd/conf/httpd.conf

       配置參數 值

           配置指令不區分字符大小寫

           值有可能區分大小寫

           有些指令能夠重複出現屢次


       配置文件格式

            全局配置

            主機配置:用於僅提供一個站點時

            虛擬主機配置:用於提供多個站點時


        配置文件語法測試

            serviice httpd configtest

            httpd -t


        絕大多數配置修改後,能夠用過service httpd reload 來生效,若是修改了監聽的地址或端口,必須重啓服務才能生效


1.監聽套接字

  Listen [IP:]port

    此指令能夠出現屢次,用於指定監聽多個不一樣的套接字

       Listen 80

       Listen 172.16.100.7:8080

2.配置使用Keepalive

   KeepAlive {On|Off}

   KeepAliveTimeout 2 超時時間

   MaxKeepAliveRequests 50 最大鏈接

3.MPM

   多道處理模塊

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

   想使用不一樣的機制,修改配置文件便可 /etc/syconfig/httpd文件

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

StartServers       8 默認啓動的工做進程數

MinSpareServers    5 最少空閒進程數

MaxSpareServers   20 最大空閒進程數

ServerLimit      256 最大活動進程數

MaxClients       256 最大併發鏈接數,最多容許發起的鏈接請求的個數

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

  </IfModule>


<IfModule worker.c>

StartServers         4 啓動的子進程的個數

MaxClients         300 最大併發鏈接數,最多容許發起的鏈接請求的個數

MinSpareThreads     25 最少空閒線程數

MaxSpareThreads     75 最大空閒線程數

ThreadsPerChild     25 每一個子進程生成的線程數

MaxRequestsPerChild  0 每一個子進程在聲明週期內最大容許服務的最多請求個數

</IfModule>


四、DSO模塊的加載方式

   LoadModule module_name /path/to/module

      若是使用相對路徑,則對於ServerRoot所定義的位置而言

      LoadMoudule php5_module /usr/lib64/httpd/modules/php.so

      讓服務重載配置文件方能生效

   httpd -m 列出與加載到全部DSO模塊與非DOS模塊

      取消 註釋掉便可

五、配置站點根目錄

    DocumentRoot /path/to/somewhere


六、頁面訪問屬性

    <Direcotry "/path/to/somewhere">

       Options 選項

          Indexes:缺乏指定的默認頁面時,容許將目錄中的全部文件已列表形式返回給用戶:危險:慎用

          FollowsymLinks:容許跟隨符號連接所指向的原始文件

          None:全部都不啓用

          All:全部的都啓用

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

          Includes:容許使用mod_include模塊實現服務器端包含(SSI)

          IncludesNOEXEC:容許包含但不容許執行腳本

          MultiViews:容許使用mod_negotiation實現內容協商

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

       AllowOverride

    </Direcotry>

     可使用正則表達式,使用~

7.基於主機的訪問控制

   <Direcotry "/path/to/somewhere">

     Options 

     AllowOverride 

       None 不由用下面

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

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

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

     Allow from

     Deny from

    </Direcotry>


   若是都匹配或都不匹配時以默認爲準

   不然則以匹配到的爲準

     Allow from

     Deny from

        IP,Network Address

        172.16

        172.16.0.0

        172.16.0.0/16

        172.16.0.0/255.255.0.0

基於用戶作訪問控制


8.定義默認主頁面

   DirectoryIndex 依次查找


9.用戶目錄

    若是指望讓每一個用戶均可以建立我的站點:http://Server_IP/~Username/

    userdir disablied:禁止

    userdir public_html:

          public_html是用戶家目錄下的目錄名稱,全部位於此目錄中的文件都可經過前述的訪問路徑進行訪問

           用戶的家目錄得賦予進行httpd進程的用戶擁有執行權限

       setfacl -m u:apache:x ~Username


十、配置日誌功能

   /var/log/http/

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

       error.log

      

      訪問日誌:

        CustomLog "/path/to/log_file" LogFormat

        LogFormat定義日誌格式

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

        %h:客戶端地址

        %l:遠程的登陸名,一般爲-

        %u:認證時的遠程用戶名,一般爲-

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

        \" :轉義,顯示""

        %r:請求報文的起始行

        %>s:響應狀態碼,

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

        %{Header_Name}i:記錄指定請求報文首部的內容(value)

        %u:請求的URL

        

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

        錯誤日誌:

         ErrorLog


十一、路徑別名

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

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


十二、指定默認的字符集

     AddDefaultCharset 

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

   URL-->FileSystem Directory

   CGI:Common Gateway Interface(通用網關接口)使WEB能夠跟一個應用程序進行通訊,從通訊環境中得到結果。

    CGI是不安全的

      在第一行寫入

      echo 「Content-Type:text/html:

   mod_alias,mod_cgi

   ScriptAlias /URL/ "/path/to/somewhere" somewhere下的文件能夠被執行

   也能夠在目錄中實現


  格式通常爲

   cat << EOF

    Content-Type:text/html

    <pre>

    The time is : `date`.

    </pre>

    EOF


14.基於用戶的訪問控制

虛擬用戶:不是系統用戶,只是爲了獲取某種資源類型的一種虛擬的用戶

   文件/etc/httpd/conf/.htpasswd

   SQL數據庫

   dbm:

   ldap:輕量級目錄訪問協議

    認證類型(auth):

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

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

    認證提供者(authentication provider):帳號和密碼的存放位置

      authn

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

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

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

    <Directory "/www/htdocs/fin">A

        options None

        AllowOverride AuthConfig 使用認證配置

        AuthType Basic 使用基本認證

        AuthName "Private Area" 質詢時標題

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

        Require vaild-user 可訪問的用戶


    </Directory>

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

      htpasswd 

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

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

      -m MD5格式存放

      -b 批量模式

      -D 刪除用戶

    三、基於組認證

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

    將全局中的DocumentRoot""註釋掉


   虛擬主機的單獨配置

   用戶認證

   訪問日誌

   錯誤日誌

   別名

   腳本別名


   基於IP認證機制,基於用戶認證


       http協議認證、表單認證


16.https協議

     x509.3證書格式

         證書格式的版本號

         證書序列號

         證書籤名算法

         證書頒發者

         有效期

         持有者的名稱

         持有者的公鑰

         CA的ID

         持有者的ID

         其餘擴展信息

              基本約束

              證書策略

              密鑰的使用限制

         CA簽名

    ssl握手要完成的工做

         交換協議版本號

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

         對兩端實現身份驗證

         密鑰交換

    http:文本協議 80/tcp

    https:二進制格式的協議 443/tcp


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


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

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

          證書頒發者的可信度

          證書的簽名檢測:

          持有者的身份檢測



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

      能夠在/etc/pki/tls/certs

      openssl s_client 

      -connet:驗證的地址:端口

      -CAfile:CA證書的路徑

    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證書的路徑


    URL Rewrite:URL重寫


1七、服務器status頁面

    內生的status信息,且此信息能夠經過web予以顯示


    基於URL訪問屬性

    <Location [~] "">

    </Location >


    基於單個文件的訪問屬性

     <File [~] "">

     </File>



     也可使用<LocationMatch "">

     </LocationMatch>來實現正則表達式的配置


     若是要配置其屬性的URL能映射到某具體文件系統路徑,建議使用<Directory>


    處理器:當文件被調用時,Apache內部表現形式:通常每種文件類型都有其隱式處理器;不然須要本身定義

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



    <Location /URL>

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


 1八、ab工具的初步使用

    -c 模擬的併發數

    -n 模擬的總請求數

   通常併發數應該小於等於請求數

   http_load webbench seige(只作參考)

   tcp_copy


1九、使用mod_deflate模塊壓縮頁面優化傳輸速度,能夠寫爲一行,也能夠寫多行,默認爲gzip


SetOutputFilter DEFLATE


# mod_deflate configuration

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



擴展功能

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

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


20.資源限定

    軟限制:能夠超出的限制,但僅能超出必定時長

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

   ulimit:只能修改軟限制

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

       -u [N]:所可以打開的最大進程數

    若是修改硬限制

      /etc/security/limits.conf,擴展配置etc/security/limits.d/*.conf

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

相關文章
相關標籤/搜索