httpd-2.2相關知識總結

一、CentOS 6中httpd相關介紹

系統所帶rpm包爲:httpd-2.2.15-39.el6.centos.x86_64

配置文件

    /etc/httpd/conf/httpd.conf 

    /etc/httpd/conf.d/*.conf  

[root@localhost ~]# grep "Section" /etc/httpd/conf/httpd.conf

### Section 1: Global Environment     //全局環境設置

### Section 2: 'Main' server configuration  //中心服務器配置

### Section 3: Virtual Hosts   //虛擬主機相關配置

服務腳本:

            /etc/rc.d/init.d/httpd   

            腳本的配置文件 : /etc/sysconfig/httpd   

主程序文件: /usr/sbin/httpd.*  默認使用prefork ,可以在服務腳本的配置文件中切換使用   

日誌文件目錄: /var/log/httpd  

            access_log : 訪問日誌  

            error_log : 錯誤日誌,記錄web服務器啓動停止,運行過程中的錯誤信息   

站點文檔目錄: /var/www/html   


二、httpd配置文件的相關配置介紹

2.1、修改監聽的服務端口    Listen [ip:]PORT
2.2、持久連接(長連接)

連接建立,每個資源獲取完成後不會斷開連接,而是繼續等待其他的請求完成

如何斷開持久連接?可以通過數量限制和時間限制來實現 

   KeepAlive  on | off

   MaxKeepAliveRequests : 持久連接時最大請求資源數 

   KeepAliveTimeout :持久連接的時間限制 

2.3、MPM-多路處理模塊

httpd-2.2 不支持同時編譯多個模塊,只能在編譯時選定一個,rpm安裝的包提供三個二進制程序文件,分別用於實現對不同MPM機制的支持,確認方法:ps aux | grep httpd 

/usr/sbin/httpd   #prefork模型(默認模型)

/usr/sbin/httpd.event   #event事件驅動模型

/usr/sbin/httpd.worker  #worker模型

 

2.4、DSO(動態共享對象)
配置指令實現模塊加載 

       LoadModule <mod_name> <mod_path>

模塊路徑可使用相對地址

 相對於ServerRoot(/etc/httpd)指向的路徑           

2.5、DocumentRoot 

(在主服務器段設置)

DocumentRoot指向的路徑爲URL路徑的起始位置
2.6、站點訪問控制

文件系統路徑:站點目錄及其子目錄

    <Directory " "> </Directory>

  URL路徑:網頁

     <Location " "> </Location>

訪問控制機制:

    基於來源地址--見2.7

    基於賬號--見2.8

2.7、基於來源地址的訪問控制

(1)Options對於此目錄資源的訪問屬性方式

   Indexes : 索引 

   FollowSymLinks : 跟蹤符號連接指定的文件,無論這個文件在什麼地方都運行訪問其原文件

   None : 不支持任何選項    (安全做法)


(2)Order檢查次序

          Order allow,deny(默認機制)   白名單

          Order deny,allow(默認機制) 黑名單

         Allow from    

          Deny from 

2.8、基於賬號

 認證質詢: 

   WWW-Authenticate:響應碼爲401,拒絕客戶端請求,並說明要求客戶提供賬號和密碼


  認證:Authorization:客戶端用戶填入賬號和密碼後再次發送請求報文,認證通過,服務器發送響應的資源

            認證類型:  

                        basic:明文

                        digest:消息摘要;經過md5加密

2.9、basic認證定義格式

  (1)基於用戶

   <Directory " PATH">

       Options None

       AllowOverride None

       AuthType Basic

       AuthName "隨便字符串"  # 告訴用戶爲什麼要彈出對話框

       AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"  

       Require user username1 username2 

   </Directory>

   <Location "" >

     .........

  </Location>

     允許賬號文件中的所有用戶登錄訪問:Require valid-user


(2)基於組

<Directory " PATH">

       Options None

       AllowOverride None

       AuthType Basic

       AuthName "隨便字符串"  # 告訴用戶爲什麼要彈出對話框

       AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE" 

         AuthGroupFile "/PATH/TO/HTTPD_GROUP_PASSWD_FILE" 

       Require group group1 group2 

   </Directory>

   <Location "" >

     .........

  </Location>



(3)添加用戶的方法-htpasswd命令

  第一次創建的時候用-c ; # htpasswd -c -m /etc/httpd/conf.d/.htpasswd user1 

  加第2個的時候要給-c選項去掉  # htpasswd -m /etc/httpd/conf.d/.htpasswd user2   

             -D 刪除用戶的 

             -m:md5加密的用戶密碼

             -s:sha1加密用戶密碼 

2.10、定義默認主頁面

DirectoryIndex index.html index.html.var

         爲空,將會給所有頁面都顯示

2.11、httpd日誌設定

錯誤日誌

       ErrorLog  logs/error_log 

       LogLevel

  日誌級別:

     debug, info, notice, warn, error, crit, alert, emerg.

    

訪問日誌

       CustomLog logs/access_log combined                   

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

組合格式

       %h  遠程主機,客戶端的ip地址 

       %l  遠程登錄的用戶名,不是表單登錄,而是使用mod_identity模塊登錄使用的 

       %u 認證時候輸入的用戶名

       %t  服務器收到請求的時間 

       %r:請求報文的首行信息 (method url version)

       %>s: 響應狀態碼

       %b:響應報文的大小 單位爲字節,不包含響應報文首部            %{Referer}i:請求報文referer首部的值 ;referer:到達當前頁面的訪問入口,即從哪兒個頁面的超鏈接跳轉 

      %{User-Agent}i:請求報文當中“User-Agent”首部的值;及發出請求用到的應用程序;用戶代理(瀏覽器類型)    

2.12、設定默認字符集

AddDefaultCharset UTF-8  | GBK | GB2312 | GB18030


2.13、虛擬主機設定方法

虛擬主機的3種類型:

1、基於ip : 爲每個虛擬主機準備至少一個ip地址 

2、 基於port : Listen 8080

       爲每個虛擬主機裝備至少一個專用端口,實踐中很少使用 

3、基於hostname ; NameVirtualHost 對應ip地址:端口 

               爲每個虛擬主機準備至少一個專用hostname

可混合使用上述三種方式任意方式 

        注意:一般虛擬主機莫與中心主機混用,所以要使用虛擬主機,先禁用中心主機 


每個虛擬主機都有專用配置:

            < VirtualHost "IP:PORT" >

                      ServerName 

                      DocumentRoot "" 

                  ServerAlias : 虛擬主機的別名 

                  ErrorLog

                   CustomLog 

               <Directory ""> 可設置訪問控制 


               </Directory>

        </VirtualHost >          

2.14、內置的status頁面 server-status定義 

#ExtendedStatus On    

 <Location /server-status>

     SetHandler server-status

   </Location> 

2.15、httpd常用的status

1xx:100-101, 信息提示;

2xx:200-206, 成功

3xx:300-305, 重定向

4xx:400-415, 錯誤類信息,客戶端錯誤

5xx:500-505, 錯誤類信息,服務器端錯誤


常用的狀態碼:

200: 成功,請求的所有數據通過響應報文的entity-body部分發送;OK

301: 請求的URL指向的資源已經被刪除;但在響應報文中通過首部Location指明瞭資源現在所處的新位置;Moved Permanently  永久重定向   

302: 與301相似,但在響應報文中通過Location指明資源現在所處臨時新位置;  Found

304: 客戶端發出了條件式請求,但服務器上的資源未曾發生改變,則通過響應此響應狀態碼通知客戶端;Not Modified

401: 需要輸入賬號和密碼認證方能訪問資源;Unauthorized

403: 請求被禁止;Forbidden

404: 服務器無法找到客戶端請求的資源;Not Found

500: 服務器內部錯誤;Internal Server Error

502: 代理服務器從後端服務器收到了一條僞響應;Bad Gateway      網關配置錯誤


三、https

     tcp 443

配置httpd支持https的方法:

(1) 爲服務器申請數字證書;

測試:通過私建CA發證書

(a) 創建私有CA

(b) 在服務器創建證書籤署請求

(c) CA簽證

(2) 配置httpd支持使用ssl,及使用的證書;

# yum -y install mod_ssl

                 # httpd -M | grep ssl

配置文件:/etc/httpd/conf.d/ssl.conf

DocumentRoot       #URL起始位置,及虛擬主機的網站目錄

ServerName           # 主機名

SSLCertificateFile    # 證書文件

SSLCertificateKeyFile  # 證書文件所對應的私鑰文件

(3) 測試基於https訪問相應的主機;

          # openssl s_client [-connect host:port] -CApath [-CAfile filename]

         


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