httpd服务

一.htpp协议报文

    请求报文语法

      <method><request-URL><version> //version为http的版本号

      <headers>      //http协议首部,有很多如Host,Connection

                 //空白行 必须的

      <entity-body>  //报文的主体,get时没有主体部分 

    响应报文语法

      <version><status><reason-phrase> //reason-phrase解释status信息

      <headers>     

 

      <entity-body>  

status类别:

    1xx: 纯信息

    2xx: 成功类的信息(200)

    3xx:重定向类的信息

    4xx: 客户端类错误信息

    5xx:服务器端错误类信息


web服务器的主要操作:

   1.建立连接--接受或拒绝客户端的连接请求

   2.接受请求--通过网络读取HTTP请求报文

   3.处理请求--解析请求报文并且做出相应的动作

   4.访问资源--访问请求报文中的相关的资源

   5.构建相应--使用正确的首部生成HTTP响应报文

   6.发送响应--向客户端发送生成的响应报文

   7.记录日志--当已完成的HTTP事务记录到日志文件

httpdMPM模型:

   prefork

   worker

   even

代理

  web代理服务器工作于webk客户端和web服务器端之间,它负责接收来自web客户端的HTTP请求,并将其转发至对应的服务。而后接收来自服务器端的响应,并将响应报文回送至客户端


httpd服务:

  事先创建进程

  按需维持适当的进程

  模块设计,核心比较小,各种功能通过模块添加(包括php)

  支持运行配置,支持单模块进行编译

  支持多种方式的虚拟主机配置

     基于ip的虚拟主机

     基于端口的虚拟主机

     基于域名的虚拟主机

  支持https协议(mod_ssl)

  支持用户认证

  支持基于ip或主机名的ACL

  支持每目录的访问控制

  支持URL重写

rpm包安装httpd:

  /usr/sbin/httpd (MPM:prefork)

  httpd: root root (master process)

  httpd: apache apache (worker process)  

  /etc/rc.d/init.d/httpd  //服务脚本

  /etc/httpd          //程序安装目录

  /etc/httpd/conf/      //配置文件目录

     主配置文件 httpd.conf 

     /etc/httpd/conf.d/*.conf  //从配置文件

  /etc/httpd/modules     //模块目录

  /etc/httpd/logs ---> /var/log/httpd //日志文件

     access_log //访问日志

     err_log   //错误日志

 /var/www/html/  //静态文件目录

 /var/www/cgi-bin //提供动态内容目录


 web服务器通过cgi与应用程序服务器通信 (cgi 通用网关接口)


 主配置文件在/etc/httpd/conf/httpd.conf

 用grep "Section" httpd.conf 命令查看配置文件有几段组成

 第一段和第三段不能同时生效 中心主机和虚拟主机不能同时共存

 配置项不区分字符大小写,但value又是需要区分大小写

 配置项

     ServerTokens  OS       //错误时显示httpd服务的版本信息

     ServerRoot "/etc/httpd"   //服务器的根目录

     Timeout 120           //超时时间

     KeepAlive Off         //是否开启长连接,0为无限制,永不断开

     MaxKeepAliveRequests 100 //最大的保持长连接数

     DirectoryIndex index.html index.html.var //默认索引文件

     //访问日志格式     

     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

     CustomLog logs/access_log combined //访问日志采用混合模式


     <IfModule prefork.c>

        StartServers       8   //httpd服务启动时创建多少个进程

        MinSpareServers    5    //服务器端最小空闲进程数

        MaxSpareServers   20    //服务器端最大空闲进程数

        ServerLimit      256   //服务器连接数 一定要比MaxClients 值大

        MaxClients       256   //最大的客户端连接数

        MaxRequestsPerChild  4000 //一个进程最多响应用户的请求

    </IfModule>



    <IfModule worker.c>

        StartServers         2  //httpd服务启动时创建多少个进程

        MaxClients         150  //最大客户端连接数

        MinSpareThreads     25   //最小空闲线程数

        MaxSpareThreads     75   //最大空闲线程数

        ThreadsPerChild     25   //每一个进程可以生成多少个线程

        MaxRequestsPerChild  0   //每一个进程能响应多少用户个请求

    </IfModule>


    Include conf.d/*.conf        //包含子配置文件

    ServerAdmin root@localhost     //服务器管理员

     ServerName www.example.com:80  //主机名

     UseCanonicalName Off        //正式名称

     DocumentRoot "/var/www/html"  //文档根目录


     <Directory "/var/www/html">

         Options Indexes FollowSymLinks 

                 None: 不支持任何选项 (默认用这值)

                 Indexes: 允许索引目录

                 FollowSymLinks:允许符号链接

                 Includes: 允许执行服务器端包含

                 SymLinksifOwnerMatch:允许执行符号链接并且进行限制

                 ExecCGI: 允许执行CGI脚本

                 MultiViews: 多功能视图

                 All:支持所有选项

         AllowOverride None   //允许覆盖,下面两项

                 AuthConfig: 允许特定账号访问

                     AuthType Basic

                     AuthName "Restricted Site...."

                     AuthUserFile "/etc/httpd/conf/htpasswd"

                     Require valid-user  //允许所有用户文件里的用户访问

                     Require user hadoop //允许某个用户访问

                 基于用户组访问

                AllowOverride AuthConfig

                AuthType Basic

                AuthName "Restricted Site...."

                AuthUserFile "/etc/httpd/conf/htpasswd"

                AuthGroupFile "etc/httpd/conf/htgroup"

                Require group haddop

                 需要手动建立用户文件

                     htpasswd  //第一次创建使用-c选项 ,第二次不能用,否则覆盖

                          -D 删除某个用户

                          -m 采用md5加密

                     htpasswd -c -m /etc/httpd/conf/htpasswd 用户名                            

         Order allow,deny    //次序,先allow后deny,用于定义主机的访问控制功能,ip

         Allow from all

     </Directory>


 MPM(多道处理模块)

     prefork  预先创建进程,一个请求用一个进程响应

     worker   一个请求用一个线程响应,启动多个进程,每个进程生成多个线程

     event 一个进程响应多个请求,基于事件请求模型来处理(2.4 以后版本默认使用event机制)

 查看httpd编译的核心模块

     httpd -l

 服务脚本配置文件

     /etc/sysconfig/httpd

 给一个ip地址添加一个别名命令

     ip addr add 192.168.1.98/24 dev eth0

 使用命令查看ip地址别名

     ip addr show

 虚拟主机的配置(使用基于域名的虚拟主机)停用中心主机,注释配置文件里的DocumentRoot选项

     NameVirtualHost 192.168.1.98:80

     <VirtualHost 192.168.1.98:80>

        ServerName www.luo.com

        DocumentRoot "/www/luo"  //指定目录不存在需要手动创建

        CustomLog /var/log/httpd/luo/access_log combined

        //设定某个ip地址不能访问

        <Directory "/www/luo">

            Options none

            AllowOverride none

            Order deny,allow

            Deny form 192.168.1.200

        </Directory>

     </VirtualHost〉

    

     <VirtualHost 192.168.1.98:80>

        ServerName www.luochen.com

        DocumentRoot "/www/luochen"  //指定目录不存在需要手动创建

        CustomLog /var/log/httpd/luochen/access_log combined

        //限制用户访问

        <Directory "/www/luochen">

             Options none

             AllowOverride AuthConfig

             Authtype Basic

             AuthName "Restrice area ...."

             AuthUserFile "/etc/httpd/.htpasswd"

             Require valid-user

        </Directory>

     </VirtualHost〉


     SeverName 的值要能被解析 需要直接编辑本机的hosts文件C:\Windows\System32\Drivers\etc

     192.168.1.98 www.luochen.com

     192.168.1.98 www.luo.com

你可能感兴趣的:(httpd服务)