zoukankan      html  css  js  c++  java
  • Linux:Day21(上) httpd基础

    CentOS 6:

      程序环境

        配置文件:

          /etc/httpd/conf/httpd.conf

          /etc/httpd/conf.d/*.conf

        服务脚本:

          /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

        配置文件的组成:

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

          ### Section 1:Golbal Environment

          ### Section 2:'Main' server configuration

          ### Section 3:Virtual Hosts

      常用配置:

        1、修改监听的IP和Port

          Listen [IP:]PORT

          省略ip表示监听本机所有IP;Listen可重复出现多次;

        2、持久连接

          Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成;

            如何断开?

              数量限制:100

              时间限制:可配置

            副作用:对并发访问量较大的服务器,持久连接功能会使用有些请求得不到响应;

            折衷:使用较短的持久连接时间;

              httpd-2.4 支持毫秒级持久时间;

         非持久连接

         KeepAlive On|Off

         MaxKeepAliveRequests #

           KeepAliveTimeout #

           测试:

           telnet HOST PORT

          GET /URL HTTP/1.1

          Host:HOSTNAME or IP

      3、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+

      4、DSO

        配置指令实现模块加载

          LoadModule <mod_name> <mod_path>

          模块路径可使用相对地址

            相对于ServerRoot(/etc/httpd)指向的路径而言;

              /etc/httpd/modules/

      5、定义'Main' server的文档页面路径

        DocumnetRoot

        文档路径映射:

          DocumentRoot指赂的路径为URL路径的起始位置;

            DocumentRoot "/var/www/html"

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

      6、站点访问控制

        可基于两种类型的路径指明对哪些资源进行访问控制

          文件系统路径:

            <Directory " "> </Directory>

            <File " "> </File>

            <FileMatch " " > </FileMatch>

          URL路径:

            <Location " "> </Location>

            ...

        访问控制机制:

          基于来源地址;

          基于账号;

      7、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

      8、定义默认主页面

        DirectoryIndex  index.html  index.html.var

      9、日志设置

        错误日志:

          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

      10、路径别名

        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

      11、设定默认字符集

        AddDefaultCharset UTF-U

        GBK,GB2312,GB18030

      12、基于用户的访问控制

        认证质询:

          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 

      13、虚拟主机

        有三种实现方案:

          基于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>

      14、内置的status页面

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

         实现:基于账号实现访问控制 

    检查httpd的配置有没有错误:httpd -t 或 service httpd configtest

  • 相关阅读:
    73. Set Matrix Zeroes
    289. Game of Live
    212. Word Search II
    79. Word Search
    142. Linked List Cycle II
    141. Linked List Cycle
    287. Find the Duplicate Number
    260. Single Number III
    137. Single Number II
    Oracle EBS中有关Form的触发器的执行顺序
  • 原文地址:https://www.cnblogs.com/sq5288/p/10796179.html
Copyright © 2011-2022 走看看