httpd配置文件解析

                          httpd配置文件解析

 

     這裏我用的是系統自帶的RPM包安裝的httpd-2.2.15版本的,最新版本配置可能會有所不同
1、模型:
    高度模塊化:DSO
    MPM:Multipath Processing Module  //多處理模塊
    prefork: 一次一個進程響應一個請求
    worker:一個進程生成多個線程,一個線程響應一個請求
    event:基於事件驅動,一個進程響應多個請求
2、安裝
    這裏就直接rpm包安裝了,光盤上就有軟件包
    yum install httpd
3、httpd安裝完後的基本信息
    /etc/rc.d/init.d/httpd  //服務腳本
    /etc/httpd/    //運行目錄
    /etc/httpd/conf    //配置文件
    /etc/httpd/conf/httpd.conf    //主配置文件
    /etc/httpd/conf.d/*.conf   //擴展配置
    DocumentRoot:/var/www/html   //站點根目錄
    CGI:/var/www/cgi-bin/
    默認主頁面文件:/var/www/html/index.html
4、主配置文件結構
    全局配置:對主服務器或虛擬主機都有效,且有些功能是服務器自身工作屬性;
    主服務器配置:主站屬性
    虛擬服務器:虛擬主機及屬性定義
5、測試配置和查看的命令
    service httpd configtest //測試配置文件有沒有語法錯誤
    httpd -t                 //同上
    httpd -l                 //當前服務器所使用的模型及開啓模塊
    httpd -D DUMP_MODULES    //當前服務器支持的模塊
    service httpd reload     //重新加載配置文件
    service httpd restart    //重啓httpd服務
    注意:修改配置文件後要重新加載配置文件,修改服務器監聽端口後要重啓服務
二、基本配置
    配置httpd的工作屬性時,指令不區分大小寫,但有約定俗成的習慣:單詞的首字母大寫,指令的值很有可能區分大小寫,有些指令可以重複使用多次。
1、配置服務器支持keep-alived(持久連接)
    KeepAlive {On|Off}   //是否支持持久連接
    KeepAliveTimeout 2 //持久連接超時時間
    MaxKeepAliveRequests 50 //超時時間內允許請求的次數
2、配置所選用的MPM的屬性,安裝完默認使用prefork模型
    StartServers 8  //服務開啓,默認啓動的進程數
    MinSpareServers 5 //最小空閒進程數
    MaxSpareServers 20 //最大空閒進程數
    ServerLimit 256 //對於MaxClients而言允許開啓最多的子進程數
    MaxClients 256 //每個進程最多用戶鏈接數
    MaxRequestsPerChild 4000 //長連接時每個用戶最多請求數
    worker模型:要支持worker模型需要配置/etc/sysconfig/httpd,開啓以下行:
    StartServers 4 //服務開啓,默認啓動的進程數 
    MaxClients 300 //最多同時客戶連接數
    MinSpareThreads 25 //最少空閒進程數
    MaxSpareThreads 75 //最好空閒進程數
    ThreadsPerChild 25 //每個進程開啓的線程數
    MaxRequestsPerChild 0
3、配置監聽的端口:
    Listen [IP:]PORT
    如:Listen 172.16.100.90:80
4、配置加載模塊
    # LoadModule foo_module modules/mod_foo.so
    #
    LoadModule auth_basic_module modules/mod_auth_basic.so
    LoadModule auth_digest_module modules/mod_auth_digest.so
    LoadModule authn_file_module modules/mod_authn_file.so
    LoadModule authn_alias_module modules/mod_authn_alias.so
5、配置網站根目錄
    DocumentRoot "/var/www/html" //指定網站的主目錄
6、配置頁面文件的訪問屬性
    Options
    Indexes    //當訪問的路徑下無默認的主頁面時,將所有資源以列表的形式呈現給用戶,慎用!建議關閉
    FollowSymLinks //是否跟隨軟連接文件
    SymLinksifOwnerMatch //跟隨符號鏈接,只允許訪問運行apache的用戶有屬主權限的文件
    ExecCGI: //是否允許執行CGI腳本;
    All
    None
7、基於客戶端訪問控制
    系統默認允許所有人訪問
    Order //定義allow和deny那個爲默認法則;寫在後面的爲默認法則:寫在前面的指令沒有顯示定義的即受後面的指令控制:
    Order allow,deny
    Allow from all //允許所有人訪問 
    如要配置允許172.16.0.0/16訪問,但不允許172.16.100.89訪問
    Order allow,deny
    Deny from 172.16.100.89 //禁用一個IP訪問
    Allow from 172.16.0.0/16 //允許一個網段訪問
8、userdir個人站點
    # UserDir is disabled by default since it can confirm the presence
     # of a username on the system (depending on home directory
    # permissions).
    #
    #UserDir disabled //註釋此項
    # 
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disabled" line above, and uncomment
    # the following line instead:
    #
9、定義默認主頁
    DirectoryIndex index.php index.jsp index.html
10、配置日誌功能
    日誌有兩類:訪問日誌(格式自定義)、錯誤日誌
    錯誤日誌:
    ErrorLog "/path/to/error_log_file"
    錯誤日誌級別debug:任意詳細信息被記錄,info:常見信息,notice:需要引起注意的信息,
    warn:警告信息,error:錯誤信息,crit:藍色信息,alert:橙色信息,emery:紅色信息。
    訪問日誌:
    CustomLog "/path/to/custom_log_file" logformat
    日誌格式:{combined|common|agent}
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    LogFormat "%{Referer}i -> %U" referer
    LogFormat "%{User-agent}i" agent
    %h //主機名
    %l //遠程登陸名,通常爲-
    %u //用戶名
    %t //請求到達的時間
    %r //請求報文的起始行,方法
    %s //響應狀態
    %b //響應報文的大小
    %{HEADER_NAME}i //記錄指定首部對應的值
    %{User-Agent}i #用戶代理
11、支持的字符集
    AddDefaultCharset UTF-8
12、路徑別名,可以隱藏網站的真實目錄,
    Alias /test/ "/www/test/" #配置別名
    可以給別名目錄定義訪問權限
    Options None
    AllowOverride None
    Order allow,deny
    Allow from 172.16.0.0/16
13、腳本路徑別名
    調用服務器上的腳本程序,但不希望腳本放在網站的目錄下
    ScriptAlias /cgi-bin/ "/www/cgi-bin/" //定義cgi腳本路徑別名
    # vi /wwww/cgi-bin/test.sh //寫一個測試腳本
    #!/bin/bash
    #cat << EOF
    Content-Type:text/html
    The hostname is: `hostname`. //輸出當前系統的主機名。
    EOF
    測試:顯示的是腳本執行後的結果
14、基於用戶訪問控制
    當你的網站或者站點的某個路徑只想讓你授權的用戶訪問時,就可以使用基於用戶的訪問控制
    這裏使用htpasswd命令建立用戶帳號文件
    htpasswd
    -c //第一次使用-c創建新文件,不是第一次不需要使用此選項
    -m //用戶密碼使用MD5加密後存放 
    -s //用戶密碼使用SHA加密後存放
    -p //用戶密碼不加密
    -d //禁用一個賬戶
    -e //啓用一個賬戶
例如:
    # htpasswd -c -m /etc/httpd/conf/.htpass tom
    命令 選項 生成的用戶文件路徑及文件名 用戶名
    # htpasswd -m /etc/httpd/conf/.htpass jerry
    # 再次添加用戶時就不要使用-c選項了,否則會覆蓋之前內容先生成
1)建立用戶帳號文件
    # htpasswd -c -m /etc/httpd/conf/.htpass tom
2)修改主配置文件
    # vi /etc/httpd/conf/httpd.conf
    DocumentRoot "/www/html"             //此時網站根目錄就是/www/html
    Optins Indexes
    AllowOverride AuthConfig
    AuthName "Oaly for employees."       //登錄提示信息,可自定義
    AuthType Basic                       //認證方式
    AuthUserFile /etc/httpd/conf/.htpass //用戶帳號文件
    Require valid-user                   //允許的用戶
    Require 指定可以訪問的用戶,可以指定單個用戶,直接寫用戶名就可以了,
    用戶名可以寫多個用空格分開,也可以指定所有用戶就用 valid-user
15、配置虛擬主機
1)註釋主服務器,添加虛擬主機
    # DocumentRoot "/www/html" //註釋主服務器 
    NameVirtualHost 172.16.100.90:80 #開啓虛擬主機
    DocumentRoot /www/web1 //虛擬主機的網站根目錄
    ServerName web1.changyu.com //主機名
    DocumentRoot /www/web2
    ServerName web2.changyu.com
2)給虛擬主機提供測試文件
    mkdir /www/web{1,2}
    echo 'web1.changyu.com'  > /www/web1/index.html
    echo 'web2.changyu.com'  > /www/web2/index.html
3)配置完後用 httpd -t 測試配置文件有沒有錯誤
4)重啓服務 service httpd restart

 

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