httpd

 

httpd

  • http服務器程序:

     

    • httpd (apache)
      nginx
      lighttpd
  • httpd的特性:

     

    • 高度模塊化: core + modules
      DSO:dynamic shared object(模塊的動態加載)
      MPM:Multipath processing Modules (多路處理模塊)

       

      • prefork:多進程模型,每個進程響應一個請求;

         

        1. 一個主進程:負責生成子進程及回收子進程;負責創建套接字;負責接收請求,并將其派發給某子進程進行處理;
        2. n個子進程:每個子進程處理一個請求;
        3. 工作模型:會預先生成幾個空閑進程,隨時等待用于響應用戶請求;最大空閑和最小空閑;
      • worker:多進程多線程模型,每線程處理一個用戶請求;

         

        1. 一個主進程:負責生成子進程;負責創建套接字;負責接收請求,并將其派發給某子進程進行處理;
        2. 多個子進程:每個子進程負責生成多個線程;
        3. 每個線程:負責響應用戶請求;
        4. 并發響應數量:m*n
          m:子進程數量
          n:每個子進程所能創建的最大線程數量;
      • event:事件驅動模型,多進程模型,每個進程響應多個請求;

         

        1. 一個主進程 :負責生成子進程;負責創建套接字;負責接收請求,并將其派發給某子進程進行處理;
        2. 子進程:基于事件驅動機制直接響應多個請求;
          httpd-2.2: 仍為測試使用模型;httpd-2.4:event可生產環境中使用;
  • httpd功能特性:
    CGI:Common Gateway Interface(支持動態網站的接口)
    虛擬主機:IP,PORT, FQDN
    反向代理
    負載均衡
    路徑別名
    豐富的用戶認證機制:basic、digest
    支持第三方模塊

  • 安裝httpd

    • rpm包:CentOS 發行版中直接提供;
      編譯安裝:定制新功能,或其它原因;
  • CentOS 6:httpd-2.2
    程序環境:

    • 配置文件:
      /etc/httpd/conf/httpd.conf
      /etc/httpd/conf.d/*.conf
    • 服務腳本:
      /etc/rc.d/init.d/httpd
      腳本配置文件:/etc/sysconfig/httpd
    • 主程序文件:當使用時啟動
      /usr/sbin/httpd(prefork)
      /usr/sbin/httpd.event
      /usr/sbin/httpd.worker
    • 日志文件:/var/log/httpd/
      access_log:訪問日志
      error_log:錯誤日志
    • 站點文檔:
      /var/www/html
    • 模塊文件路徑:
      /usr/lib64/httpd/modules
    • 服務控制和啟動:
      chkconfig httpd on|off
      service httpd {start|stop|restart|status|configtest|reload}
  • CentOS 7:httpd-2.4

    • 配置文件:
      /etc/httpd/conf/httpd.conf
      /etc/httpd/conf.d/*.conf
      模塊相關的配置文件:/etc/httpd/conf.modules.d/*.conf;
      systemd unit file:/usr/lib/systemd/system/httpd.service
    • 主程序文件:
      /usr/sbin/httpd
      httpd-2.4支持MPM的動態切換;
    • 日志文件:
      /var/log/httpd:
      access_log:訪問日志
      error_log:錯誤日志
    • 站點文檔:
      /var/www/html
    • 模塊文件路徑:
      /usr/lib64/httpd/modules
    • 服務控制:
      systemctl enable|disable httpd.service
      systemctl {start|stop|restart|status} httpd.service

httpd配置

  • 配置的實現方式

    • 編輯:/etc/httpd/conf/httpd.conf
    • 在/etc/httpd/conf.d/下配置模塊化的文件
  • 主配置文件:/etc/httpd/conf/httpd.conf,配置段的劃分

    ### Section 1: Global Environment    全局環境
    ### Section 2: 'Main' server configuration  主服務器配置段
    ### Section 3: Virtual Hosts  虛擬主機配置
    
    主服務器和虛擬服務器不能同時生效;
        httpd-2.2,需要手動關閉一個;
        httpd-2.4,兩者之間可自動關閉;
  • 配置格式:

    • directive value

       

      • directive:指令;不區分字符大小寫;
        value:指令的值;為路徑時,是否區分字符大小寫,取決于文件系統;
    • 配置塊

      示例:
      
      <Directory />
        AllowOverride none
        Require all denied
      </Directory>
      
      內部指令的生效范圍只對此配置塊描述的范圍有效;
  • 常用配置:

    1. 修改監聽的IP和PORT
      Listen [IP-address:]portnumber [protocol]

      • 省略IP表示為0.0.0.0;
      • Listen指令可重復出現多次;
        Listen 80
        Listen 8080
      • 修改監聽socket,重啟服務進程方可生效;
      • 限制其必須通過ssl通信時,protocol需要定義為https;
    2. 持久連接(保持連接,長連接)
      Persistent Connection:tcp連續建立后,每個資源獲取完成后不全斷開連接,而是繼續等待其它資源請求的進行;

      • 如何使其連接時不至于過長?

        • 數量限制 or 時間限制
          副作用:對并發訪問量較大的服務器,長連接機制會使得后續某些請求無法得到正常響應;
          折衷:使用較短的持久連接時長,以及較少的請求數量;

          主配置文件/etc/httpd/conf/httpd.conf中沒有相關設置;可以新建一個配置文件,在/etc/httpd/conf.d/
          
          KeepAlive  On|Off  是否使用長連接
          KeepAliveTimeout  15    超時時長
          MaxKeepAliveRequests  100   連接時請求的資源的多少
          
          注意:httpd-2.4的KeepAliveTimeout可以是毫秒級;
            KeepAliveTimeout num[ms]
        • 編輯完文件后,檢查文件:httpd -t
      • 測試:
        telnet WEB_SERVER_IP PORT
        GET /URL HTTP/1.1
        Host: WEB_SERVER_IP

        示例:
        telnet 172.16.0.67
        
        GET /index.html HTTP/1.1
        host:172.16.0.67
    3. MPM

      • httpd-2.2,不支持同時編譯多個MPM模塊,所以只能編譯選定要使用的那個;CentOS 6的rpm包為此專門提供了三個應用程序文件,httpd(prefork), httpd.worker, httpd.event,分別用于實現對不同的MPM機制的支持;確認現在使用的是哪下程序文件的方法:ps aux | grep httpd

        • 更換使用httpd程序,以支持其它MPM機制;
          /etc/sysconfig/httpd
          HTTPD=/usr/sbin/httpd.{worker,event}

          #HTTPD=/usr/sbin/httpd.worker
          HTTPD=/usr/sbin/httpd.worker
          
          選擇啟用哪一個模塊;
          默認使用的為/usr/sbin/httpd,其為prefork的MPM模塊;

          注意:重啟服務進程方可生效

      • httpd-2.4更換MPM模塊;編輯/etc/httpd/conf.modules.d/00-mpm.conf;選擇要使用MPM的LoadModule。

      • 查看httpd程序的模塊列表:
        查看靜態編譯的模塊:
        ~]# httpd -l
        查看靜態編譯及動態編譯的模塊:
        ~]# httpd -M

      • MPM配置:編輯/etc/httpd/conf/httpd.conf

        prefork的配置:    
        
        <IfModule prefork.c>
        StartServers       8
        MinSpareServers    5
        MaxSpareServers   20
        ServerLimit      256
        MaxClients       256
        MaxRequestsPerChild  4000
        </IfModule>
        worker的配置:
        
        <IfModule worker.c>
        StartServers         4
        MaxClients         300
        MinSpareThreads     25
        MaxSpareThreads     75
        ThreadsPerChild     25
        MaxRequestsPerChild  0
        </IfModule>
      • 統計網站瀏覽量的指標:PV,UV,IP
        PV:Page View
        UV: User View;獨立的用戶瀏覽量
        IP:獨立的IP瀏覽量

    4. DSO
      使用httpd -M顯示有(shared)的模塊都可以使用LoadModule實現動態裝載;/etc/httpd/conf.modules.d/*.conf
      配置指定實現模塊加載:LoadModule <mod_name> <mod_path>
      模塊文件路徑可使用相對路徑:相對于ServerRoot(默認/etc/httpd)

    5. 定義'Main' server的文檔頁面路徑

      ServerName     此處的名字主要是用來標識主機認為自己是服務于誰的;跟真正的主機名沒關機;若沒有定義會反解IP地址
              語法格式: ServerName [scheme://]fully-qualified-domain-name[:port]    
      
       DocumentRoot  ""  
           文檔路徑映射:
               DoucmentRoot指向的路徑為URL路徑的起始位置;其相當于站點URL的根路徑;
               URL PATH與FileSystem PATH不是等同的,而是存在一種映射關系;
               URL /  --> FileSystem /var/www/html/
               /images/logo.jpg --> /var/www/html/images/logo.jpg
    6. 站點訪問控制常見機制
      可基于兩種機制指明對哪些資源進行何種訪問控制

      • 文件系統路徑:

        如果是針對于一個目錄下的所有資源進行控制:
        
          <Directory  "">    
          ...
          </Directory>
        
        如果是針對于一個文件或一組文件:
        
          <File  "">
          ...
          </File>
        
          <FileMatch  "PATTERN">
          ...
          </FileMatch>
      • URL路徑:

        <Location  "">
          ...
          </Location>
        
          <LocationMatch "PATTERN">
          ...
          </LocationMatch>
      • <Directory>中“基于源地址”實現訪問控制:

        • 控制頁面資源允許、拒絕指定的主機:

          • httpd-2.2:order和allow、deny
            order:定義allow、deny的生效次序;寫在后面的表示默認法則;
            Allow from IP|NetAddr | Deny from IP|NetAddr
            NetAddr格式:
            172.16
            172.16.0.0
            172.16.0.0/16
            172.16.0.0/255.255.0.0

          • httpd-2.4:
            基于IP控制:
            Require ip IP地址或網絡地址
            Require not ip IP地址或網絡地址
            基于主機名控制:
            Require host 主機名或域名
            Require not host 主機名或域名

            要放置于<RequireAll>配置塊中或<RequireAny>配置塊中;

        • 控制頁面資源允許所有來源的主機可訪問:

          httpd-2.2
                <Directory "">
                    ...
                    Order allow,deny
                    Allow from all 
                </Directory>
          
            httpd-2.4
                <Directory "">
                    ...
                    Require all granted
                </Directory>
        • 控制頁面資源拒絕所有來源的主機可訪問:

          httpd-2.2
                <Directory "">
                    ...
                    Order allow,deny
                    Deny from all 
                </Directory>
          
            httpd-2.4
                <Directory "">
                    ...
                    Require all denied
                </Directory>
        • Options:定義特定目錄下的資源如何被訪問;后跟1個或多個以空白字符分隔的“選項”列表;

          可用選項:
          
          Indexes:允許索引;指明的URL路徑下不存在與定義的主頁面資源相符的資源文件時,返回索引列表給用戶;取消后,給出路徑可以查看,沒有路徑不支持查看;
          FollowSymLinks:允許跟蹤符號鏈接文件所指向的源文件;
          None:什么都不允許;
          All:除了MultiViews之外的所有選項;
    7. 定義站點主頁面:
      DirectoryIndex index.html index.html.var

    8. 定義路徑別名
      格式:Alias /URL/ "/PATH/TO/SOMEDIR/"

    9. 設定默認字符集
      AddDefaultCharset UTF-8
      中文字符集:GBK, GB2312, GB18030

    10. 日志設定
      日志類型:訪問日志 和 錯誤日志

      • 錯誤日志:
        配置文件/etc/httpd/conf/httpd.conf中:ErrorLog "logs/error_log"
        日志文件:/etc/httpd/logs/error_log

      • 訪問日志:

        /etc/httpd/conf/httpd.conf中的格式:
        
          LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
          CustomLog  logs/access_log  combined
        
              %h:客戶端IP地址;
              %l:Remote User, 通常為一個減號(“-”);
              %u:Remote user (from auth; may be bogus if return status (%s) is 401);非為登錄訪問時,其為一個減號;
              %t:服務器收到請求時的時間;
              %r:First line of request,即表示請求報文的首行;記錄了此次請求的“方法”,“URL”以及協議版本;
              %>s:響應狀態碼;
              %b:響應報文的大小,單位是字節;不包括響應報文的http首部;
              %{Referer}i:請求報文中首部“referer”的值;即從哪個頁面中的超鏈接跳轉至當前頁面的;
              %{User-Agent}i:請求報文中首部“User-Agent”的值;即發出請求的應用程序;
    11. 基于用戶的訪問控制

      • 認證質詢:
        WWW-Authenticate:響應碼為401,拒絕客戶端請求,并說明要求客戶端提供賬號和密碼;
      • 認證:
        Authorization:客戶端用戶填入賬號和密碼后再次發送請求報文;認證通過時,則服務器發送響應的資源;
        認證方式有兩種:
        basic:明文
        digest:消息摘要認證比較老的瀏覽器不一定適用

      • 安全域:需要用戶認證后方能訪問的路徑;應該通過名稱對其進行標識,以便于告知用戶認證的原因;

      • 用戶的賬號和密碼存放于何處?
        虛擬賬號:僅用于訪問某服務時用到的認證標識

        • 文本文件;
          SQL數據庫;
          ldap目錄存儲;
      • basic認證配置示例:

        1. 定義安全域

           

          <Directory "">
           Options None
           AllowOverride None
           AuthType Basic
           AuthName "String“
           AuthUserFile  "/PATH/TO/HTTPD_USER_PASSWD_FILE"
           Require  user  username1  username2 ...
          </Directory>

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

        2. 提供賬號和密碼存儲(文本文件)
          使用專用命令完成此類文件的創建及用戶管理
          htpasswd [options] /PATH/TO/HTTPD_PASSWD_FILE username
          -c:自動創建此處指定的文件,因此,僅應該在此文件不存在時使用;
          -m:md5格式加密
          -s: sha格式加密
          -D:刪除指定用戶
          -b:批模式添加用戶
          htpasswd -b [options] /PATH/TO/HTTPD_PASSWD_FILE username password

        3. 另外:基于組賬號進行認證;

          • 定義安全域

             

            <Directory "">
              Options None
              AllowOverride None
              AuthType Basic
              AuthName "String“
              AuthUserFile  "/PATH/TO/HTTPD_USER_PASSWD_FILE"
              AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"
              Require  group  grpname1  grpname2 ...
            </Directory>
          • 創建用戶賬號和組賬號文件;
            組文件:每一行定義一個組
            GRP_NAME: username1 username2 …
    12. 虛擬主機

      • 站點標識: socket

        • IP相同,但端口不同;
          IP不同,但端口均為默認端口;
          FQDN不同;請求報文首部中的Host: www.magedu.com
      • 有三種實現方案:
        基于ip:為每個虛擬主機準備至少一個ip地址;
        基于port:為每個虛擬主機使用至少一個獨立的port;
        基于FQDN:為每個虛擬主機使用至少一個FQDN;
        注意(專用于httpd-2.2):一般虛擬機不要與中心主機混用;因此,要使用虛擬主機,得先禁用'main'主機;
        禁用方法:注釋中心主機的DocumentRoot指令即可;

      • 虛擬主機的配置方法:三種方案可以混用

        <VirtualHost  IP:PORT>
          ServerName FQDN
          DocumentRoot  ""
        </VirtualHost>

        適用于中心主機的指令同樣適用于虛擬主機:

        ServerAlias:虛擬主機的別名;可多次使用;
        ErrorLog:
        CustomLog:
        <Directory "">
        ...
        </Directory>
        Alias
        ...
      • 基于IP的虛擬主機示例:

        <VirtualHost 172.16.100.6:80>
              ServerName www.a.com
              DocumentRoot "/www/a.com/htdocs"
          </VirtualHost>
        
          <VirtualHost 172.16.100.7:80>
              ServerName www.b.net
              DocumentRoot "/www/b.net/htdocs"
          </VirtualHost>
        
          <VirtualHost 172.16.100.8:80>
              ServerName www.c.org
              DocumentRoot "/www/c.org/htdocs"
          </VirtualHost>
      • 基于端口的虛擬主機:

        <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>
      • 基于FQDN的虛擬主機:

        <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-2.2,則使用基于FQDN的虛擬主機時,需要事先使用指令:NameVirtualHost IP:PORT

    13. status
      查看是否裝載:httpd -M | grep status
      狀態路徑:/etc/httpd/conf.modules.d/00-base.conf
      裝載模塊:LoadModule status_module modules/mod_status.so

      httpd-2.2
      
      <Location /server-status>
          SetHandler server-status
          Order allow,deny
          Allow from 172.16
      </Location>
      httpd-2.4
      
      <Location /server-status>
          SetHandler server-status
          <RequireAll>
              Require ip 172.16
          </RequireAll>
      </Location>
    14. 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 [options…] 
        curl的常用選項:

        • -A/–user-agent 設置用戶代理發送給服務器
          –basic 使用HTTP基本認證
          –tcp-nodelay 使用TCP_NODELAY選項
          -e/–referer 來源網址
          –cacert CA證書 (SSL)
          –compressed 要求服務端返回是壓縮的格式,僅僅只是傳輸過程中的壓縮,但客戶端也可接收壓縮格式;
          -H/–header 自定義首部信息傳遞給服務器
          -I/–head 只顯示響應報文首部信息
          –limit-rate 設置傳輸速度
          -u/–user 設置服務器的用戶和密碼
          -0/–http1.0 使用HTTP 1.0
      • elinks命令
        elinks [OPTION]… [URL]…
        -dump: 不進入交互式模式,而直接將URL的內容輸出至標準輸出;

    15. user/group
      指定以哪個用戶的身份運行httpd服務進程(子進程或線程);

      /etc/httpd/conf/httpd.conf
      
      User apache
      Group apache

      當某個服務需要使用管理員的身份運行時,可以切換身份:SUexec機制

    16. 使用mod_deflate模塊壓縮頁面優化傳輸速度

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

        首先確認mod_deflate模塊是啟用的:~]# httpd -M | grep deflate
        
          設置輸出過濾器
          SetOutputFilter DEFLATE  
        
          # mod_deflate configuration
        
          # 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)
          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
    17. https(http over ssl)

      1. 先是TCP的三次握手
      2. ssl協議握手,建立ssl會話
      3. 進行ssl會話
      4. 斷開連接,進行tcp的四次揮手;

        • SSL會話的簡化過程

          1. 客戶端發送可供選擇的加密方式,并向服務器請求證書;
          2. 服務器端發送證書以及選定的加密方式給客戶端;
          3. 客戶端取得證書并進行證書驗正:

             

            • 如果信任給其發證書的CA:
              (a) 驗正證書來源的合法性;用CA的公鑰解密證書上數字簽名;
              (b) 驗正證書的內容的合法性:完整性驗正
              (c) 檢查證書的有效期限;
              (d) 檢查證書是否被吊銷;
              (e) 證書中擁有者的名字,與訪問的目標主機要一致;
          4. 客戶端生成臨時會話密鑰(對稱密鑰),并使用服務器端的公鑰加密此數據發送給服務器,完成密鑰交換;
          5. 服務用此密鑰加密用戶請求的資源,響應給客戶端;

          注意:SSL會話是基于IP地址創建;所以單IP的主機上,僅可以使用一個https虛擬主機;

      • 配置httpd支持https:

        (1) 為服務器申請數字證書;
              測試:通過私建CA發證書
                  (a) 創建私有CA
                  (b) 在服務器創建證書簽署請求
                  (c) CA簽證
        
          (2) 配置httpd支持使用ssl,及使用的證書;
              # yum -y install mod_ssl
              配置文件:/etc/httpd/conf.d/ssl.conf
                  DocumentRoot
                  ServerName
                  SSLCertificateFile
                  SSLCertificateKeyFile
        
          (3) 測試基于https訪問相應的主機;
              # openssl  s_client  [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]
    18. httpd自帶的工具程序

      • htpasswd:basic認證基于文件實現時,用到的賬號密碼文件生成工具;
      • apachectl:httpd自帶的服務控制腳本,支持start和stop;
      • apxs:由httpd-devel包提供,擴展httpd使用第三方模塊的工具;
      • rotatelogs:日志滾動工具;在時間、空間上控制

         

        第一輪:access.log  
        第二輪:            access.log, access.1.log
        第三輪:                          access.log, acccess.1.log, access.2.log
      • suexec:訪問某些有特殊權限配置的資源時,臨時切換至指定用戶身份運行;
    19. httpd的壓力測試工具
      命令行:ab, webbench, http_load, seige
      圖形化:jmeter, loadrunner

      tcpcopy:網易開發,復制生產環境中的真實請求,并將之保存下來;

      ab [OPTIONS] URL
      -n:總請求數;
      -c:模擬的并行數;
      -k:以持久連接模式 測試;

httpd-2.4:

  • 新特性:
    (1) MPM支持運行為DSO機制;以模塊形式按需加載;
    (2) event MPM生產環境可用;
    (3) 異步讀寫機制;
    (4) 支持每模塊及每目錄的單獨日志級別定義;
    (5) 每請求相關的專用配置;
    (6) 增強版的表達式分析式;
    (7) 毫秒級持久連接時長定義;
    (8) 基于FQDN的虛擬主機也不再需要NameVirutalHost指令;
    (9) 新指令,AllowOverrideList;
    (10) 支持用戶自定義變量;
    (11) 更低的內存消耗;

  • 新模塊:
    (1) mod_proxy_fcgi
    (2) mod_proxy_scgi
    (3) mod_remoteip

  • 安裝httpd-2.4
    依賴于apr-1.4+, apr-util-1.4+, [apr-iconv]
    apr: apache portable runtime

    • CentOS 6:

      • 默認:apr-1.3.9, apr-util-1.3.9

      • 開發環境包組:Development Tools, Server Platform Development
        開發程序包:pcre-devel

      • 編譯安裝步驟:

        (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
        
          自帶的服務控制腳本:apachectl
    • CentOS 7:

      • ~]# yum install httpd

      • 配置文件:

        /etc/httpd/conf/httpd.conf
        /etc/httpd/conf.modules.d/*.conf
        /etc/httpd/conf.d/*.conf
      • 配置應用:

        1. 切換使用的MPM

           

          編輯配置文件/etc/httpd/conf.modules.d/00-mpm.conf,啟用要啟用的MPM相關的LoadModule指令即可。
        2. 基于IP的訪問控制

          允許所有主機訪問:Require  all  granted
          拒絕所有主機訪問:Require  all  deny
          
          控制特定的IP訪問:
           Require  ip  IPADDR:授權指定來源的IP訪問;
           Require  not  ip  IPADDR:拒絕
          
          控制特定的主機訪問:
           Require  host  HOSTNAME:授權指定來源的主機訪問;
           Require  not  host  HOSTNAME:拒絕
          
           HOSTNAME:
               FQDN:特定主機
               domin.tld:指定域名下的所有主機
          
          <RequireAll>
           Require all granted
           Require not ip 172.16.100.2
          </RequireAll>
        3. 虛擬主機

          基于FQDN的虛擬主機也不再需要NameVirutalHost指令;
          
          <VirtualHost *:80>
           ServerName www.b.net
           DocumentRoot "/apps/b.net/htdocs"
           <Directory "/apps/b.net/htdocs">
               Options None
               AllowOverride None
               Require all granted
           </Directory>
          </VirtualHost>    
          
          注意:任意目錄下的頁面只有顯式授權才能被訪問;
        4. ssl

        5. KeepAliveTimeout #ms
          毫秒級持久連接時長定義;

 

 

原創文章,作者:s,如若轉載,請注明出處:http://www.www58058.com/77498

(0)
ss
上一篇 2017-06-04
下一篇 2017-06-04

相關推薦

  • Linux三劍客之sed

    sed 簡介 sed 工作原理 命令格式 常用選項: 地址定界: 編輯命令: 替換標記: sed元字符集(正則表達式) 高級編輯命令: sed用法實例 作業: 選定行的范圍:,(逗號) 刪除操作:d命令 顯示模式空間內容 追加(行下):a\命令 插入(行上):i\命令 退出:q命令 多點編輯:e命令 從文件讀入:r命令 寫入文件:w命令 替換操作:s命令 替…

    Linux干貨 2016-08-11
  • thinkpad e420編譯安裝thinkfan控制風扇

    我的筆記本是win7+linuxmint雙系統,在進入linuxmint長時間運行后會明顯感覺發熱,我發現筆記本風扇的轉數過低,導致熱量不能發散出去,解決方法就是安裝thinkfan風扇控制軟件。 1、下載軟件包 https://sourceforge.net/projects/thinkfan/ 最新版本是1.0beta2 2、編譯安裝 編譯前確保安裝過c…

    Linux干貨 2017-03-09
  • 第七周:文件系統、raid、lvm和shell腳本練習

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; [root@wlm ~]# fdisk /dev/sdb    #將/dev/sdb進行分區操作 D…

    Linux干貨 2016-11-07
  • ip子網劃分

    ip子網劃分 人們為了通信方便,給每臺計算機分配了一個類似我們電話號碼一樣的標識地址。IP就好比一個人的指紋一樣,在INTERNET中是獨一無二的(公網中)。我們可以通過ip查詢到使用該ip的主機。 現在的IP分為ipv4和ipv6。前者是32位二進制組成,為了防止IP不夠用由此研發出后者ipv6,ipv6是由128位二進制組成。ipv6中包含ip的數量相當…

    Linux干貨 2017-07-01
  • python快速入門之數據類型

        Python 是 90 年代初由 Guido Van Rossum 為了打發圣誕節而創建的語言。如今它已是當前最流行的程序語言之一.     Python的關鍵要素有以下幾點:1.基本數據類型;2.對象引用;3.組合數據類型;4.邏輯操作符;5.控制流語句;6.算數操作符…

    Python干貨 2015-12-10
  • Linux Shell(腳本)編程入門

    為什么要進行shell編程 在Linux系統中,雖然有各種各樣的圖形化接口工具,但是sell仍然是一個非常靈活的工具。Shell不僅僅是命令的收集,而且是一門非常棒的編程語言。您可以通過使用shell使大量的任務自動化,shell特別擅長系統管理任務,尤其適合那些易用性、可維護性和便攜性比效率更重要的任務。 下面,讓我們一起來看看shell是如何工作的: 建…

    Linux干貨 2017-08-05
欧美性久久久久