httpd的功能特性及配置文件詳解

   httpd:Apache超文本傳輸協議服務器, 是Apache超文本傳輸協議(HTTP)服務器的主程序。被設計爲一個獨立運行的後臺進程,它會建立一個處理請求的子進程或線程的池。

   httpd的特性

    1)高度模塊化:核心+模塊的方式

    2)DSO(Dynamic Shared Object): 支持動態裝卸載

    3)MPM:Multipath Processiong Module多處理模塊

        Apache HTTP 服務器被設計爲一個功能強大,並且靈活的 web 服務器, 可以在很多平臺與環境中工作。不同平臺和不同的環境往往需要不同 的特性,或可能以不同的方式實現相同的特性最有效率。Apache 通過模塊化的設計來適應各種環境。這種設計允許網站管理員通過在 編譯時或運行時,選擇哪些模塊將會加載在服務器中,來選擇服務器特性。

        使用MPM的優勢

             Apache 能更優雅,更高效率的支持不同的平臺Apache 

             能更好的爲有特殊要求的站點定製。例如,要求 更高伸縮性的站點可以選擇使用線程的 MPM,即worker或 event,需要可靠性或者與舊軟件兼容的站點可以使用 prefork。

         MPM的三種模型:

            prefork:多進程模型,每個進程響應一個請求;穩定性好,但併發能力有限,預先生成多個空閒進程,select()系統調用,不能超過1024個;

           worker:多進程模型,每個進程可生成多個線程,每個線程響應一個請求;預先生成多個空閒進程;

            event:一個進程直接響應n個請求,可同時啓動多個進程(n*m);基於事件驅動工作。

   httpd的功能特性

虛擬主機:基於HOST,IP,PROT實現虛擬主機

支持CGI:Common Gateway Interface,是一種協議,

反向代理:

負載均衡

路徑別名

豐富的用戶認證

  basic認證

  digest認證

     支持第三方模塊

    

    配置文件位置:    

      配置文件:

/etc/httpd/conf/httpd.conf

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

服務腳本:

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

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

模塊文件:

/etc/httpd/muludes:符號鏈接文件

/usr/lib64/httpd/moudles

主程序:

/usr/sbin/httpd:默認的MPM爲prefork,多進程模型

/usr/sbin/httpd.work,多線程模型

/usr/sbin/httpd.event,I/O模型

可通過配置/etc/sysconfig/httpd選擇工作方式

      日誌文件目錄:

      /var/log/httpd

      access_log:訪問日誌

      error_log: 錯誤日誌

      站點文檔目錄:

      /var/www/html

/etc/httpd/conf/httpd.conf的詳細說明

 (1) /etc/host

      可配置httpd啓動的時候不報錯

       後加本機IP 本機名 別名

     /etc/httpd/conf.d/welcome.conf

     移除此文件可去掉歡迎界面

      /var/www/html/index.html

    主頁地址

(2)指定監聽的地址和端口

    Listen [ip:]PROT

    注意:Lsten可以出現多次

(3)持久連接

      keepAlive off|on

      MaxkeepAliveRequests  100 #限制了當啓用KeepAlive時,每個連接允許的請求數量。如果將此值設爲”0″,將不限制請求的數目

      keepAliveTimeout 15

(4) MPM相關 

    ps aux|grep httpd 查看正在工作的模式

      配置文件中查看:Server-Pool Size Regulation

    切換工作模式:/etc/sysconfig/httpd

(5) DSO動態裝卸載
        httpd -l:顯示編譯進核心的模塊
        httpd -M:做進模塊中的內容

    注意:依賴關係

         相對路徑,相對於SERVERROOT參數所指定的路徑ServerRoot:/etc/httpd

     service httpd configtest:

      httpd -t :配置文件的語法檢查

     注意:修改了裝載的模塊後,reload即可生效

(6)指定Main Server的docroot

     配置文件中 Section 2

     DocumentRoot "":修改路徑

     例如;/www/htdocs

     文件系統路徑;/www/htdocs/bbs/upload/a.rar

     URL路徑:http://Server_IP/bbs/upload/a.rar

    注意:section2 和section 3不能同時使用

(7)站點路徑訪問控制

    基於本地文件系統路徑,支持級聯

     <Directory "/path/to/some_directory">

     </Directory>

     <Directory "/www">

     </directory>

    基於URL實現

     <Location "/path/to/some_url">

     </Location>

(8)Directory容器中的訪問控制定義

 (a)Options

     Indexes: 當訪問的路徑下無主頁面時,將所有資源以列表形式呈現給用戶,危險,慎用

     FollowSymLinks:可以顯示鏈接文件 跟隨符號鏈接指向的源文件

     -FollowSymLinks取消選項

     None:一個也沒有

     All:所有

 (b)AllowOverride None

 (c)基於IP的訪問控制

     order allow ,deny

     allow from all

     from後面能接受的地址格式:

     IP,Network Address

     網絡地址格式:

     172.16

     172.16.0.0

     172.16.0.0/16

     172.16.0.0/255.255.0.0

     ordre allow,deny

     Deny form 172.16.100.77  拒絕

     Allow from 172.16 開啓訪問

     /var/log/httpd/access_log 正確的訪問日誌

     /var/log/httpd/error_log 錯誤的訪問日誌

 (9)定義默認的主頁面

  DirectoryIndex index.html index.html.var

 (10)配置日誌功能,默認開啓

   ErrorLog logs/error_log:定義錯誤日誌文件路徑

   LogLevel warn:日誌級別

   CustomLog  logs/access_log combined: 訪問日誌

指令日誌文件日誌格式名稱                           

     LogFormat:   log/access_log格式

     %h Remote host

     %l  remote logname

     %u Romate user

     %t time   用戶請求收到時的時間

     %r First line of request :請求報文的首行

       method url version

     %b

     ${Foobar}i 

     %{Referer}i:跳轉至當前頁面之前來源的上一次所在的頁面

     %{User_Agent}i:用戶代理

(11)curl命令

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>設置用戶代理髮送給服務器

-base 使用HTTP基本認證

--tcp-nodelay 使用TCP_NODELAY等選項

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

curl -e "URL" http://

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

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

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

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

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

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

-0/--http1.0 使用HTTP1。0


用法:curl [options] URL...

TCP擁塞控制:Nagel算法,爲了防止小報文的佔用空間,節約網絡帶寬,爲了提高效果,可以關閉這種算法 --tcp-nodelay不激活算法


(12)路徑別名

    定義方法:

    Alias /URL/ "/path/to/some_directory/"

    Alias /icons/ "/var/www/icons/"

     Alias /bbs/ "/web/forum/" #注意:bbs後可以沒有斜槓,則forum後面也沒有斜槓    

         特別注意:selinux需要關閉,否則路徑別名不能使用selinux 0

 訪問方法:

     http://172.16.100.8/bbs/images/1.html

(13)設定默認字符集

    AddDefaultCharset UTF-8

    常用字符集:UTF-8,GBK,GB2312,GB18030

(14)基於用戶的訪問控制

請求--》質詢--》輸入賬號密碼--》訪問成功

質詢:

www-Autherticate:服務器用401狀態拒絕客戶端請求,說明需要用戶特供用戶名密碼

認證:

Authorization:客戶端填入賬號和密碼後重新發出請求,包含認證算法,用戶名和密碼

安全域:secrity realm

docroot:/www/htdocs/

     admin/

      finance/

相關模塊:auth_basic_module modules/mod_auth_basic.so

認證方式:

基本認證:basic

      base64編碼 存在安全缺陷,較容易還原

摘要認證:digest 

cd /www/hddocs

mkdir admin


 mkdir /etc/httpd/users

 htpasswd命令

 -c創建

 -m:md5格式

 -D:刪除

 -p:明文加密

 配置httpd使用basic認證;

 (1)定義security realm

    <Directory "/var/www/html/admin">
    Options None
    AllowOverride None #不允許使用.htaccess中的指令
    AuthType Basic  #基於basic認證
    AuthUserFile /etc/httpd/users/.htpasswd #存放文件的位置
    Require Valid-user #Valid-user允許賬號中的所有用戶訪問,針對某個用戶訪問命令require user 用戶名
    </Directory>

 (2)提供用於認證的文件

      htpasswd [options] password_fiel username

[root@localhost html]# htpasswd -c -m /etc/httpd/users/.htpasswd tom
New password: 
Re-type new password: 
Adding password for user tom
htpasswd  -m /etc/httpd/users/.htpasswd jerry

      -c:添加第一個用戶時自動創建賬號文件,以後再創建用戶不需要加-c;

      -m:以md5格式加密密碼

      -s:以sha格式加密

      -p:明文

      -D:刪除指定用戶

(3) 組認證: <Directory "/www/htdocs/amdin">

 Options None

 AllowOverride None

 AuthType Basic

 AuthName "Admin Area"

 AuthGroupFile /etc/httpd/users/.htgroup

 AuthUserFile /etc/httpd/users/.htpasswd  自己創建

  Require group GRP1,..

 </directory>

  祖文件:

  每行定義一個組,格式

  GROUP: user1 user2  user3


  (15)虛擬主機

  一個物理服務器服務於多個站點,每個站點通過一個虛擬主機來實現

  IP:port

  httpd支持三種類型的虛擬主機

      基於IP

      基於port

      基於host

  注意:取消中心主機main Server,配置完虛擬主機後需要重啓服務,否則不生效

#DocumentRoot "/var/www/html"

定義虛擬主機:

  基於端口:

<VirtualHost 192.168.1.179:80>
ServerName www.ma.com
DocumentRoot "/web/www.ma.com"
</VirtualHost>
<VirtualHost 192.168.1.179:8080>
ServerName www.ma.org
DocumentRoot "/web/www.ma.org"
</VirtualHost>

確保監聽狀態

Listen 80
Listen 8080


實力3:基於Host  Servername 的不同

NameVirtualHost *:80   //啓用起來

</VirtualHost 172.16.100.8:80>

ServerName  www.ma.com

ServerAlias "bieming"  //使用別名

DocumentRoot "/Vhosts/www.ma.com"

</VirtualHost>

</VirtualHost 172.16.100.8:80>

ServerName  www.ma.org

DocumentRoot "/Vhosts/www.ma.org"

</VirtualHost>

修改/etc/hosts

curl http://www.magedu.com

culr http://www.magedu.org


三種模式可以混用,日誌文件可以獨立分開


(16)內置的status頁面

mod_status.so


</location /server-status>

SetHandler server-status

Order deny,allow

Deny form all

Allow from 172.16

</Location>



測試URL/server-status

ExtendedStatus On

更詳細的status信息

          


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