溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

httpd 配置

發(fā)布時間:2020-07-03 09:04:27 來源:網(wǎng)絡(luò) 閱讀:393 作者:彥博 欄目:網(wǎng)絡(luò)安全


CentOS 6:httpd-2.2
            程序環(huán)境:
                配置文件:
                    /etc/httpd/conf/httpd.conf
                    /etc/httpd/conf.d/*.conf
                服務(wù)腳本:
                    /etc/rc.d/init.d/httpd
                    腳本配置文件:/etc/sysconfig/httpd
                主程序文件:
                    /usr/sbin/httpd
                    /usr/sbin/httpd.event
                    /usr/sbin/httpd.worker
                日志文件:
                    /var/log/httpd:
                        access_log:訪問日志
                        error_log:錯誤日志
                站點文檔:
                    /var/www/html(頁面文件)
                模塊文件路徑:
                    /usr/lib64/httpd/modules
                    
                服務(wù)控制和啟動:
                    chkconfig  httpd  on|off
                    service  {start|stop|restart|status|configtest|reload}  httpd


常用配置:
         
   1、修改監(jiān)聽的IP和PORT

        # vim /etc/httpd/conf/httpd.conf

httpd 配置                           (1) 省略IP表示為0.0.0.0;
                    (2) Listen指令可重復(fù)出現(xiàn)多次;
                        Listen  80
                        Listen  8080
                    (3) 修改監(jiān)聽socket,重啟服務(wù)進(jìn)程方可生效;
               注意:改配置文件需要重啟服務(wù)  service httpd restart           

                netstat -tnlp(查看當(dāng)前啟動的服務(wù)所用的端口)   

         2、持久連續(xù)
      tcp連續(xù)建立后,每個資源獲取完成后不全斷開連接,而是繼續(xù)等待其它資源請求的進(jìn)行;
     副作用:對并發(fā)訪問量較大的服務(wù)器,長連接機(jī)制會使得后續(xù)某些請求無法得到正常 響應(yīng);
      折衷:使用較短的持久連接時長,以及較少的請求數(shù)量;                       
                    KeepAlive  On|Off(是否開啟持久連續(xù))
                    KeepAliveTimeout  15(時間限制)
                    MaxKeepAliveRequests  100(數(shù)量限制

   # vim /etc/httpd/conf/httpd.conf

httpd 配置

      重啟服務(wù)  service httpd restart 


    3、MPM              
                httpd-2.2不支持同時編譯多個MPM模塊,所以只能編譯選定要使用的那個;

                CentOS 6的rpm包為此專門提供了三個應(yīng)用程序文件:

                httpd(prefork),       httpd.worker,        httpd.event

             查看現(xiàn)在使用的是哪個程序文件的方法啟動了多少進(jìn)程:
                   #    ps  aux  | grep httpd

                第一行為主控進(jìn)程(管理進(jìn)程的創(chuàng)建和銷毀)

             默認(rèn)使用的為/usr/sbin/httpd,其為prefork的MPM模塊 ;
                    查看httpd程序的模塊列表:
                        查看靜態(tài)編譯的模塊:
                            # httpd  -l
                        查看靜態(tài)編譯及動態(tài)編譯的模塊:
                            # httpd  -M

              更換使用httpd程序,以支持其它MPM機(jī)制;
                  #   vim /etc/sysconfig/httpd
                        HTTPD=/usr/sbin/httpd.{worker,event}
                        
                注意:重啟服務(wù)進(jìn)程方可生效

                         # service httpd restart 

MPM配置:  
                # vim /etc/httpd/conf/httpd.conf
                    prefork的配置        
                        <IfModule prefork.c>(如果prefork存在)
                        StartServers       8(啟動多少空閑進(jìn)程)
                        MinSpareServers    5(最少空閑進(jìn)程數(shù))
                        MaxSpareServers   20(最大空閑進(jìn)程)
                        ServerLimit      256(允許MaxClients最大啟動的進(jìn)程數(shù)量)
                        MaxClients       256(最大允許啟動的進(jìn)程數(shù)量)
                        MaxRequestsPerChild  4000(每個進(jìn)程最多可處理多少請求,處理了4000個就要銷毀此進(jìn)程)
                        </IfModule>        
                
                    worker的配置:
                        <IfModule worker.c>
                        StartServers         4(啟動多少空閑進(jìn)程)
                        MaxClients         300(最大允許啟動的進(jìn)程數(shù)量)
                        MinSpareThreads     25(最少空閑進(jìn)程數(shù))
                        MaxSpareThreads     75(最多空閑進(jìn)程數(shù))
                        ThreadsPerChild     25(每個主進(jìn)程最大可生成多少線程)
                        MaxRequestsPerChild  0(每個進(jìn)程可處理無上限的請求)
                        </IfModule>                        
                
                PV,UV
                    PV:Page View(頁面瀏覽量)
                    UV: User View(用戶瀏覽量)

4、DSO(動態(tài)共享模塊)
                配置指定實現(xiàn)模塊加載
                    LoadModule  <mod_name>  <mod_path>(模塊文件路徑)
                    
                    模塊文件路徑可使用相對路徑:
                        相對于ServerRoot(默認(rèn)/etc/httpd)


5、  定義訪問主文檔頁面路徑

    # vim /etc/httpd/conf/httpd.conf

         DocumentRoot  " "

文檔路徑映射:
                    DoucmentRoot指向的路徑為URL路徑的起始位置
                        其相當(dāng)于站點URL的根路徑;

注意:重啟服務(wù)進(jìn)程方可生效

                         # service httpd restart 


6、站點訪問控制常見機(jī)制

               # vim /etc/httpd/conf/httpd.conf           
                可基于兩種機(jī)制指明對哪些資源進(jìn)行何種訪問控制
                
                    文件系統(tǒng)路徑:
                        <Directory  "">
                        ...
                        </Directory>
                        
                        <File  "">
                        ...
                        </File>
                        
                        <FileMatch  "PATTERN">
                        ...
                        </FileMatch>
                    URL路徑:
                        <Location  "">
                        ...
                        </Location>
                        
                        <LocationMatch "">
                        ...
                        </LocationMatch>
                        
                <Directory>中“基于源地址”實現(xiàn)訪問控制:
                    (1) Options
                        后跟1個或多個以空白字符分隔的“選項”列表;
                            Indexes:指明的URL路徑下不存在與定義的主頁面資源相符的資源文件時,返回索引列表給用戶;(建議關(guān)掉)
                            FollowSymLinks:允許跟蹤符號鏈接文件所指向的源文件(建議關(guān)掉);
                            None:一個也沒有
                            All:全部
                        建議改為:Options  None    

                    (2)  AllowOverride(允許覆蓋)
                        與訪問控制相關(guān)的哪些指令可以放在.htaccess文件(每個目錄下都可以有一個)中;
                            All: 全部
                            None:一個也沒有
                        建議改為:AllowOverride  None        
                    (3) order和allow、deny拒絕
                        order:定義生效次序;寫在后面的表示默認(rèn)法則;
                        
                        Allow from來源地址, Deny from來源地址
                            來源地址:
                                IP
                                NetAddr:(網(wǎng)絡(luò)地址)
                                    172.16
                                    172.16.0.0
                                    172.16.0.0/16
                                    172.16.0.0/255.255.0.0
                        1、e.g.設(shè)置為僅允許172.16網(wǎng)段的主機(jī)訪問:Allow from 172.16    
                        2、e.g.Deny from 172.16.100.88
                            Allow from 172.16 

                      (僅允許172.16網(wǎng)段的主機(jī)訪問,但 172.16.100.88這臺不能訪問)

7、定義站點主頁面:

         # vim /etc/httpd/conf/httpd.conf

                DirectoryIndex  index.html  index.html.var(先找index.html沒有找到,就找index.html.var)

8、定義路徑別名

  # vim /etc/httpd/conf/httpd.conf

               格式:
                    Alias  /URL/  "/PATH/TO/SOMEDIR/"
            
                DocumentRoot "/www/htdocs"
                    http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm
                        /www/htdocs/download/bash-4.4.2-3.el6.x86_64.rpm
                        
                Alias  /download/  "/rpms/pub/"
                    http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm 

                        /rpms/pub/bash-4.4.2-3.el6.x86_64.rpm
                        
                    http://www.magedu.com/p_w_picpaths/logo.png
                        /www/htdocs/p_w_picpaths/logo.png
                    
            9、設(shè)定默認(rèn)字符集(為防止“語言”不通,響應(yīng)的頁面看不懂。)
                AddDefaultCharset  UTF-8
                
                中文字符集:GBK, GB2312, GB18030


           10、日志設(shè)定
                日志類型:訪問日志 和 錯誤日志
                
                錯誤日志


                    ErrorLog  logs/error_log


                    LogLevel  warn(警告)
                    錯誤級別: debug(所有錯誤的都記錄下來), info(比debug更高級), notice(引起關(guān)注), warn(警告), error(發(fā)生錯誤), crit(級別很嚴(yán)重), alert(紅色警戒), emerg(緊急事務(wù)).
                        
                訪問日志:查看訪問日志:#tail /var/log/httpd/access_log
                    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
                    CustomLog  logs/access_log  combined
                    
                    LogFormat format strings:(LogFormat格式符意思)
                        http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
                    
                        %h:客戶端IP地址;
                        %l:客戶端用戶名, 通常為一個減號(“-”);
                        %u:客戶端用戶 (from auth; may be bogus if return status (%s) is 401);非為登錄訪問時,其為一個減號;
                        %t:服務(wù)器收到請求時的時間;
                        %r:First line of request,即表示請求報文的首行;記錄了此次請求的“方法”、“URL”以及協(xié)議版本;
                        %>s:響應(yīng)狀態(tài)碼;
                        %b:響應(yīng)報文的大小,單位是字節(jié);不包括響應(yīng)報文的http首部;
                        %{Referer}i:請求報文中首部“referer”的值;referer即從哪個頁面中的超鏈接跳轉(zhuǎn)至當(dāng)前頁面的;
                        %{User-Agent}i:請求報文中首部“User-Agent”的值;即發(fā)出請求的應(yīng)用程序;


           11、基于用戶的訪問控制

           認(rèn)證方式有兩種:
                        basic:明文
                        digest:消息摘要認(rèn)證

       此處使用  basic認(rèn)證。

  # vim /etc/httpd/conf/httpd.conf


httpd 配置

basic認(rèn)證配置示例:
                     定義安全域
                        <Directory "">(定義哪個頁面資源訪問時需要認(rèn)證)
                            Options None
                            AllowOverride None
                            AuthType Basic(認(rèn)證類型)
                            AuthName "String“(認(rèn)證提示符)
                            AuthUserFile  "/PATH/TO/HTTPD_USER_PASSWD_FILE"(認(rèn)證時的賬號密碼所在的路徑)
                            Require  user  username1  username2 ...(指明可登陸的用戶;允許賬號文件中的所有用戶登錄訪問:Require   valid-user)
                        </Directory>


       創(chuàng)建賬號密碼文件AuthUserFile :

                    htpasswd  [options]   /PATH/TO/HTTPD_PASSWD_FILE  username
                                -c:自動創(chuàng)建此處指定的文件,因此,僅應(yīng)該在此文件不存在時使用;
                                -m:md5格式加密
                                -s: sha格式加密
                                -D:刪除指定用戶
                        e.g. htpasswd -c -m /etc/httpd/conf/.htpasswd  tianxudong
                          注意:首次添加用戶時使用-c,之后都不能使用,否則會覆蓋里面原有的用戶信息。


基于組賬號進(jìn)行認(rèn)證;

# vim /etc/httpd/conf/httpd.conf

httpd 配置

                 相比定義用戶訪問控制,多加一個組認(rèn)證的文件。  
                                AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"
                                Require  group  grpname1  grpname2 ..  

                                            
     創(chuàng)建用戶賬號和組賬號文件;
         #vim /etc/httpd/conf/.htgroup

                     mygrp: tianxidong   

     

         組文件:每一行定義一個組
                                GRP_NAME: username1  username2  ...
                             

     12、虛擬主機(jī)      
                有三種實現(xiàn)方案:
                    基于ip:
                        為每個虛擬主機(jī)準(zhǔn)備至少一個ip地址;
                    基于port:
                        為每個虛擬主機(jī)使用至少一個獨(dú)立的port;
                    基于FQDN:
                        為每個虛擬主機(jī)使用至少一個FQDN;

           注意:一般虛擬機(jī)不要與中心主機(jī)混用;因此,要使用虛擬主機(jī),得先禁用'main'主機(jī);
         禁用方法:注釋中心主機(jī)的DocumentRoot指令即可;

          虛擬主機(jī)的配置方法:
                    <VirtualHost  IP:PORT>(虛擬主機(jī)所監(jiān)聽的端口地址)
                        ServerName FQDN(若沒有用name標(biāo)示,則無需寫FQDN)
                        DocumentRoot  ""(虛擬主機(jī)的站點文件路徑)
                    </VirtualHost>
                    
                    其它可用指令:
                        ServerAlias:虛擬主機(jī)的別名;可多次使用;
                        ErrorLog:(此虛擬主機(jī)專用的錯誤日志)
                        CustomLog:(此虛擬主機(jī)專用的訪問日志)
                        <Directory "">(基于路徑對資源做訪問控制)
                        ...
                        </Directory>
                        Alias(路徑別名)
                        ...

    e.g.  不同IP訪問不同站點:

                   注釋掉主配置文件的DocumentRoot

                      編譯一個文件:
                     # vim /etc/httpd/conf.d/vhosts.conf
                              <VirtualHost 172.168.110.6:80>
                                     ServiceName www.a.com
                                     DocumentRoot "/www/a.com/htdocs"
                              </VirtualHost>

                              <VirtualHost 172.168.110.7:80>
                                     ServiceName www.b.net
                                     DocumentRoot "/www/b.net/htdocs"
                              </VirtualHost>

                              <VirtualHost 172.168.110.8:80>
                                     ServiceName www.c.org
                                     DocumentRoot "/www/c.org/htdocs"
                              </VirtualHost>
                      語法檢查:httpd -t
                      重啟服務(wù):service httpd reload

                    
     e.g.     基于端口的虛擬主機(jī):
                    首先添加3個端口:可參考上面的常用配置 1 。
                     語法檢查:httpd -t
                 
                     編譯一個文件:
                     # vim /etc/httpd/conf.d/vhosts.conf

                    <VirtualHost 172.16.100.6:80>
                        ServerName www.a.com
                        DocumentRoot "/www/a.com/htdocs"
                    </VirtualHost>

                    <VirtualHost 172.16.100.6:808>
                        ServerName www.b.net
                        DocumentRoot "/www/b.net/htdocs"
                    </VirtualHost>

                    <VirtualHost 172.16.100.6:8080>
                        ServerName www.c.org
                        DocumentRoot "/www/c.org/htdocs"
                    </VirtualHost>
                     語法檢查:httpd -t
                     重啟服務(wù):service httpd reload
                    
          e.g.     基于FQDN的虛擬主機(jī):(端口一樣、地址一眼樣)
                    NameVirtualHost 172.16.100.6:80(基于FQDN的虛擬主機(jī)需要加一個專門的指令,Centos7不需要此指令)

                    <VirtualHost 172.16.100.6:80>
                        ServerName www.a.com
                        DocumentRoot "/www/a.com/htdocs"
                    </VirtualHost>

                    <VirtualHost 172.16.100.6:80>
                        ServerName www.b.net
                        DocumentRoot "/www/b.net/htdocs"
                    </VirtualHost>

                    <VirtualHost 172.16.100.6:80>
                        ServerName www.c.org
                        DocumentRoot "/www/c.org/htdocs"
                    </VirtualHost>                                            
                     語法檢查:httpd -t
                     重啟服務(wù):service httpd reload   

          13、status頁面(查看運(yùn)行中的進(jìn)程詳細(xì)情況,應(yīng)加以訪問認(rèn)證)
                LoadModule  status_module  modules/mod_status.so
                編輯主配置文件,將以下幾行啟用。
                <Location /server-status>
                    SetHandler server-status
                    Order allow,deny
                    Allow from 172.16(建議設(shè)置為只允許某臺主機(jī)訪問)
                </Location>


        14、使用mod_deflate模塊壓縮頁面優(yōu)化傳輸速度

            適用場景:
                (1) 節(jié)約帶寬,額外消耗CPU;同時,可能有些較老瀏覽器不支持;
                (2) 壓縮適于壓縮的資源,例如文件文件;

        # vim /etc/httpd/conf/httpd.conf

httpd 配置

                          語法檢查:httpd -t
                          重啟服務(wù):service httpd reload    


CentOS 6上編譯安裝httpd2.4版本:


           CentOS 6默認(rèn)apr和 apr-util是1.39版的,而httpd2.4,需要 apr和 apr-util 是1.4版本以上的。

              可以去 apr.apache.org官網(wǎng)下載1.4版本的。

              開發(fā)環(huán)境包組:Development Tools, Server Platform Development
              開發(fā)程序包:pcre-devel

                先關(guān)掉httpd服務(wù)不要開機(jī)自動啟動
                 # service httpd stop
                 # chkconfig httpd off
                
                編譯安裝步驟:
                    (1) apr-1.4+
                        # ./configure  --prefix=/usr/local/apr
                        # make && make install
                        
                    (2) apr-util-1.4+
                        # ./configure  --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr
                        # make && make install
                        
                    (3) httpd-2.4
                        # ./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24  --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
                        # make  && make install







































































































 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI