Linux:Day21(上) httpd基礎

CentOS 6:html

  程序環境web

    配置文件:數據庫

      /etc/httpd/conf/httpd.confapache

      /etc/httpd/conf.d/*.conf安全

    服務腳本:bash

      /etc/rc.d/init.d/httpd服務器

      配置文件:/etc/sysconfig/httpd併發

    主程序文件:ide

      /usr/sbin/httpd測試

      /usr/sbin/httpd.event

      /usr/sbin/httpd.worker

    日誌文件目錄:

      /var/log/httpd

        access_log:訪問日誌

        error_log:錯誤日誌

    站點文檔目錄:

      /var/www/html

    配置文件的組成:

      ~]# grep "Section" /etc/httpd/conf/httpd.conf

      ### Section 1:Golbal Environment

      ### Section 2:'Main' server configuration

      ### Section 3:Virtual Hosts

  經常使用配置:

    一、修改監聽的IP和Port

      Listen [IP:]PORT

      省略ip表示監聽本機全部IP;Listen可重複出現屢次;

    二、持久鏈接

      Persistent Connection:鏈接創建,每一個資源獲取完成後不會斷開鏈接,而是繼續等待其它的請求完成;

        如何斷開?

          數量限制:100

          時間限制:可配置

        反作用:對併發訪問量較大的服務器,持久鏈接功能會使用有些請求得不到響應;

        折衷:使用較短的持久鏈接時間;

          httpd-2.4 支持毫秒級持久時間;

     非持久鏈接

     KeepAlive On|Off

     MaxKeepAliveRequests #

       KeepAliveTimeout #

       測試:

       telnet HOST PORT

      GET /URL HTTP/1.1

      Host:HOSTNAME or IP

  三、MPM

    Multipath Process Module:多道處理模塊

      prefork,worker,event

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

      # ps aux | grep httpd

    默認爲/usr/sbin/httpd,其使用prefork

      查看模塊列表:

        查看靜態編譯的模塊

          # httpd -l

          Compiled in modules:

            core.c

            prefork.c

            http_core.c

            mod_so.c

        查看靜態編譯及動態裝載的模塊

          # httpd -M

    更換使用的httpd程序:

      /etc/sysconfig/httpd

        HTTPD=

      重啓服務生效:

    prefork的配置:

    worker的配置:

    PV,UV

      PV:Page View

      UV:User View

        獨立IP量:

      300*86500=40W+

  四、DSO

    配置指令實現模塊加載

      LoadModule <mod_name> <mod_path>

      模塊路徑可以使用相對地址

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

          /etc/httpd/modules/

  五、定義'Main' server的文檔頁面路徑

    DocumnetRoot

    文檔路徑映射:

      DocumentRoot指賂的路徑爲URL路徑的起始位置;

        DocumentRoot "/var/www/html"

          test/index.html --> http://HOST:PORT/test/index.html

  六、站點訪問控制

    可基於兩種類型的路徑指明對哪些資源進行訪問控制

      文件系統路徑:

        <Directory " "> </Directory>

        <File " "> </File>

        <FileMatch " " > </FileMatch>

      URL路徑:

        <Location " "> </Location>

        ...

    訪問控制機制:

      基於來源地址;

      基於帳號;

  七、Directory中」基於來源地址「實現訪問控制

    (1) Options

      全部可用特性:Indexes Includes FollowSymLinks SymLkinksifOwneratch ExecCGI MultiViews

             None All

        Indexes:索引;

        FollowSymlinks:容許跟蹤符號連接文件;

    (2) 基於來源地址的訪問控制機制

      Order:檢查次序

        Order allow,deny

        Order deny,allow

      Allow from

      Deny from

  八、定義默認主頁面

    DirectoryIndex  index.html  index.html.var

  九、日誌設置

    錯誤日誌:

      ErrorLog logs/error_log

      LogLevel warn

         debug, info, notice, warn, error, crit

    訪問日誌:

      CustomLog logs/access_log combined

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

      %h:客戶端IP地址;

      %l:Remote logname (from identd, if supplied),-表示爲空;

      %u:Remote user (from auth; may be bogus if return status (%s) is 401);

      %t:Time the request was received (standard english format),服務器收到請求的時間;

      %r:First line of request,請求報文的首行信息(method url version);

      %>s:響應狀態碼;

      %b:響應報文的大小,單位是字節,不包括響應報文首部;

      %{Referer}i:請求報文當中「referer」首部的值;當前資源的訪問入口,即從哪一個頁面中的超連接跳轉而來;

      %{User-agent}i:請求報文當中「User-agent」首部的值;即發出請求用到的應用程序;

    詳情:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

  十、路徑別名

    DocumentRoot "/www/htdocs"

      http://www.magedu.com/download/bash-4.4.2-3.e16.x86_64.rpm

        --> /www/htdocs/download/bash-4.4.2-3.e16.x86_64.rpm

    Alias /URL/ "/PATH/TO/SOMEDIR"

      Alias /bbs/ "/forum/htdocs"

        http://www.magedu.com/bbs/index.html

          --> /forum/htdocs/bbs

  十一、設定默認字符集

    AddDefaultCharset UTF-U

    GBK,GB2312,GB18030

  十二、基於用戶的訪問控制

    認證質詢:

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

    認證:

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

      認證類型:

        basic:明文

        digest:消息摘要

    安全域:須要用戶認證後方能訪問的路徑;

      應該經過名稱對其進行標識,並用於告知用戶認證的緣由;

    用戶的帳號和密碼存儲於何處?

      虛擬帳號:僅用於訪問某服務時用到的認證標識;

      存儲:

        文本文件

        SQL數據庫

        ldap

        nis

    basic認證:

      (1) 定義安全域

        <Directory "/www/htdocs/admin">

          Options None
          AllowOverride None
          AuthType Basic
          AuthName "Administrator home"
          AuthUserFile "/etc/httpd/conf.d/.htpasswd"
          Require user tom jerry
        </Directory>

          容許帳號文件中的全部用戶登陸訪問;

            Require valid-user

      (2) 提供帳號和密碼存儲(文本文件)

        使用htpasswd命令進行管理

          htpasswd [options] passwordfile username

            -c:自動建立passwordfile,所以,僅應該在添加第一用戶時使用;

            -m:md5加密用戶密碼;

            -s:sha1加密用戶密碼;

            -D:刪除指定用戶

      (3) 實現基於組進行認證

        <Directory "/www/htdocs/admin">

          Options None
          AllowOverride None
          AuthType Basic
          AuthName "Administrator home"
          AuthUserFile "/etc/httpd/conf.d/.htpasswd"

          AuthGroupFile "/etc/httpd/conf.d/.htgroup"
          Require group GROUP1 GROUP2 ...
        </Directory>

        要提供:用戶帳號文件和組文件;

          組文件:每一行定義一個組

            GRP_NAME:user1 user2 user3 

  1三、虛擬主機

    有三種實現方案:

      基於ip:

        爲每一個虛擬主機準備至少一個ip地址;

      基於port:

        爲每一個虛擬主機準備至少 一個專用port;實踐中不多使用;

      基於hostname:

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

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

    注意:通常虛擬主機莫與中心主機混用,因此,要使用虛擬主機,先禁用中心主機;

      禁用中心主機:註釋DocumnetRoot

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

      <VirtualHost IP:PORT>  #這個IP和PORT即爲虛擬主機監聽的套接字,這個套接字在全局Listen也要被定義。

        SeverName

        DocumnetRoot " "

      </VirtualHost>

        SeverAlias:虛擬主機的別名;

        ErrorLog

        CustomLog

        <Directory "">

        </Directory>

 

    示例1:基於ip      

      <VirtualHost 192.168.6.129:80>
        DocumentRoot /vhost/web1/htdocs
        ServerName web1.magedu.com
      </VirtualHost>

 


      <VirtualHost 192.168.6.130:80>
        DocumentRoot /vhost/web2/htdocs
        ServerName web2.magedu.com
      </VirtualHost>

    示例2:基本port 

 

      <VirtualHost 192.168.6.130:80>
        DocumentRoot /vhost/web2/htdocs
        ServerName web2.magedu.com
      </VirtualHost>

 


      <VirtualHost 192.168.6.130:8080>
        DocumentRoot /vhost/web3/htdocs
        ServerName web3.magedu.com
      </VirtualHost>

    示例3:基於hostname  # 須要開啓NameVirtualHost 192.168.6.129:80

      <VirtualHost 192.168.6.129:80>
        DocumentRoot /vhost/web1/htdocs
        ServerName web1.magedu.com
      </VirtualHost>


      <VirtualHost 192.168.6.129:80>
        DocumentRoot /vhost/web2/htdocs
        ServerName web2.magedu.com
      </VirtualHost>


      <VirtualHost 192.168.6.129:80>
        DocumentRoot /vhost/web3/htdocs
        ServerName web3.magedu.com
      </VirtualHost>

  1四、內置的status頁面

    <Location /server-status>
      SetHandler server-status
      Order deny,allow
      Deny from all
      Allow from 192.168
    </Location>

     實現:基於帳號實現訪問控制 

檢查httpd的配置有沒有錯誤:httpd -t 或 service httpd configtest

相關文章
相關標籤/搜索