httpd二之主配置文件详解、测试工具、压力测试ab

本文主要讲述httpd的主配置文件中可以配置的选项以及参数,以2.2系列的为主,在http2.4以后会添加一些新的功能和模块,配置文件可能也会有一些差别,关于2.4的配置文件将在后续推出,敬请期待!

  如果httpd是yum安装或者是rpm包安装的话,主配置文件会默认保存在/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf为主配置文件的辅助性配置文件

1、监听套接字

 Listen [IP:]port

  此指令可以出现多次,用于指定监听多个不同的套接字,IP地址可以省略,如果IP地址省略则表示监听在本机所有的ip地址上

2、配置实用Keepalive,主要是配置保持连接中的超时时间和最大连接数

  KeepAlive {On|Off}

   KeepAliveTimeout 2 超时时间为2s,单位默认为s

   MaxKeepAliveRequests 50 最大连接数

3.MPM,为多道处理模块

   prefork:一个进程响应一个请求

   worker:一个进程生成多个线程,一个线程响应一个请求

   event:一个进程同事响应多个请求,但不会生成线程

   http -l 查看编译进内核的模块

   如果向使用不同的MPM,直接修改文件/etc/sysconfig/httpd文件中的HTTPD项即可

    <IfModule preforck.c> 判断模块是否存在

       StartServers  默认启动的工作进程数

       MinSpareServers 最少空闲进程数

       MaxSpareServers 最大空闲进程数

       ServerLimit  最大活动进程数

       MaxClients  最大并发连接数,最多允许发起的连接请求个数

       MaxRequestsPerChild 每个子进程在生命周期内最大允许服务的请求个数

    </IfModule>

     <IfModule worker.c>

        StartServers 默认启动的工作进程数

       MaxClients 最大并发连接数

       MinSpareThreads 最少空闲线程数

       MaxSpareThreads 最多空闲线程数

       ThreadsPerChild 每个自己进程生成的线程数

       MaxRequestsPerChild 每个子进程在生命周期内最大允许服务的请求个数

     </IfModule>

4.DOS模块的加载方式,动态模块

     LoadModule module_name /path/to/module

      可以使用绝对路径,也可以使用相对路径,如果使用相对路径,则是相对于ServerRoot所定义的位置而言的

     httpd -m 列出所有已加载的DOS模块与非DOS模块

5.配置站点根目录

     DocumentRoot /path/to/somewhere

       只能使用绝对路径

6.页面访问属性

    <Direcotry "/path/to/somewhere">

        Options 选项

          Indexes:缺少指定的默认主页时,允许将目录中的所有文件以列表形式返回给用户,危险:慎用

          FollowsymLinks:允许跟随符号链接所指向的岁暗示文件

          None:所有的都不启用

          All: 所有的都启用

          ExecCGI: 允许使用mod_cgi模块执行CGI脚本

          Includes: 允许mod_include模块实现服务器端包含

          IncludesNOEXEC:允许包含但不允许执行CGI脚本

          MultiViews:允许使用mod_negotication实现内容协商

          SymLinksIfOwnerMatch:在链接文件属主属组与原始文件的属主属组相同时,允许跟随符号连接所指向的原始文件

     </Direcotry>

7.基于主机的访问控制(2.2系列的配置)

      <Direcotry "/path/to/somewhere">

          Options

          AllowOverride

              None 不禁用下面选项

         Order 次序,写在后面的为默认

             allow,deny: 没有允许的都拒绝

             deny,allow:没有拒绝的都允许

         Allow from   允许通过的主机

         Deny from    拒绝通过的主机

              可以是单独的ip地址,也可以是一个网段

               192.168.0

                192.168.0.0

                192.168.0.0/24

                192.168.0.0/255.255.255.0

                 表示的都为192.168.0网段

     </Direcotry>

        如果都匹配或都不匹配时则以默认的为准,否则以匹配到的为准

8.定义默认主页面

     DirectoryIndex

      查询顺序为依次查询

9.用户目录

    如果期望让每个用户都可以创建个人站点,基于http://Sevrer_IP/~Username/

        userdir disablied:禁止

       userdir public_html: 是指用户家目录下的目录名称,所有位于此目录中的文件均可以通过前述的访问路径进行访问

         用户的家目录得赋予运行http进程的用户拥有执行权限,可以通过setfacl -m来进行设置

10.配置日志功能

      access.log 访问日志,其需要记录的内容需要自定义

      error.log 错误日志,

   访问日志:

       CustomLog "/path/to/log_file" LogFormat

     LofFormat定义的日志格式,只解释最常用的一种

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

         %h: 客户端地址

        %l:远程的登陆名,通常为-

        %u: 认证时的远程用户名,通常为-

        %t: 接收到的请求时的时间,为标准英文格式时间+时区

        \":表示转义,显示"

         %r:请求报文的起始行

        %>s: 响应状态码

        %b:以字节响应报文的长度,不包含头报文

        %{Referer}i:记录指定请求报文首部的内容

        %{User-Agent}i:用户使用的工具      

      详情请参考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

11.路径别名

     Alias /alias/ "/path/to/somewhere"

      意味着访问http://Server_IP/alias时,其页面文件来自于/path/to/somewhere中

12.指定默认的字符集

      AddDefaultCharset

13.脚本路径别名(CGI接口)

     CGI:Common Gateway Interface(通用网关接口)使web可以跟一个应用程序进行通信,从通信环境中获得结果,前提必须加载mod_alias和mod_cgi模块

    一般在第一行写入 echo “Content-Type:text/html”

    ScriptAlias /URL/ "/path/to/somewhere" somewhere下的文件可以被执行

    格式一般为

      cat << EOF

          Content-Type:text/html

          <pre>

            The Time is : `date`

          </pre>

        EOF

14.基于用户的访问控制

    虚拟用户:不是系统上的用户,只是为了获取某种特定的资源烈性的一种虚拟用户

    可以基于文件、SQL数据库、DBM、ldap认证

    认证类型(auth)

      basic:基本认证,账号和密码以明文发送

      digest:摘要认证,hash编号以后再发送

    认证提供者(authentiation provide):账号和密码的存放位置

    授权机制(authorization):根据什么进行授权

案例:基于文件,做基本认证根据用户和组进行授权

  1、编辑配置文件,为需要认证的目录配置认证机制

  <Directory "/www/htdocs/fin">

       options None

       AllowOverride AuthConfig 使用认证配置

      AuthType Basic 使用基本认证

      AuthName "Private Area" 质询时标题

      AuthUserFile /etc/http/conf/.htpasswd  密码的存放位置

      Require vaild-user 可访问的用户

   </Directory>

   2、使用htpsswdm命令使用生成认证库

    htpasswd

     -c 创建密码,创建第一个用户时使用

    htpasswd -c -m /etc/http/conf/.htpasswd tom

     -m MD5格式存放

    -b 批量模式

    -D 删除用户

  3、基于组认证

  <Directory "/www/htdocs/fin">

       options None

       AllowOverride AuthConfig 使用认证配置

      AuthType Basic 使用基本认证

      AuthName "Private Area" 质询时标题

      AuthgroupFile /etc/http/conf/.htpasswd  密码的存放位置

      Require group GroupName  可访问的用户

  </Directory>

      先创建用户,在创建组

     组文件:

       组名:用户1 用户2 用户3

15.虚拟主机

     一个物理服务器提供多个站点;使用虚拟要先取消中心主机

     基于不同的IP实现不同的虚拟主机:变化IP

      基于不同的port实现不同的虚拟主机:变化port

      基于不同的主机名实现不同的虚拟主机:变化ServerName的值

     通过请求报文中的HOST来实现不同的虚拟主机的访问

      <VirtualHost IP:port>

        SeverName

        DocumentRoot ""

         <Directory "">

         </Directory>

        ServerAlias

        ServerAdmin

       </VirtualHost>

      虚拟主机可以单独配置用户认证、访问日志、错误日志、别名、脚本别名等

16.https协议,监听在tcp的443端口

      X509.3证书格式

         证书格式的版本号

         证书序列号

         证书签名算法

         证书颁发者

         有效期

         持有者的名称

         持有者的公钥

         CA的ID

          持有者的ID

          其他扩展信息

            基本约束

            证书策略

            密钥的使用限制

         CA签名

   ssl握手要完成的工作

       交换协议版本号

       选择一个双方都支持的加密方式

       对两端实现身份验证

       密钥交换

    SSL会话基于IP地址进行:不支持在基于主机名的虚拟主机上实现

    客户端验证服务器端证书时:

        日期检查:证书是否在有效期内

        证书颁发者的可信度

        证书的签名检测:

        持有者的身份检测:

   httpd:基于mod_ssl模块实现对于ssl的支持

    步骤:

      1)、准备好服务器的私钥和证书

      2)、安装mod_ssl模块

           yum -y install mod_ssl

       3)、配置/etc/httpd/conf.d/ssl.conf

            配置基于ssl的虚机主机

              ServerName

               DocunmentRoot

            配置证书和私钥

              SSLCertificatFile 证书文件

              SSLCertificatKeyFile 密钥文件

       4)、重启httpd服务

       5)、测试        

          openssl s_client

          -connet:验证的地址:端口

         -CAfile:CA证书的路径

17.服务器status页面,

     内生的status信息,且此信息可以通过web予以显示出来

     基于目录的访问属性

        <Directory [~] "">

         </Directory>

      基于URL访问属性

        <Location [~] "">

         </Location>

      基于单个文件的访问属性

        <File [~] "">

         </File>

       也可以使用<LocationMatch "" > </LocationMatch>来实现正则表达式的配置

      如果要配置其属性的URL能映射到牟文建系统路径,建议使用Directory

       处理器:当问及被调用时,Apache内部表现形式,一般每种文件类型都有其隐式处理器,否则需要自己定义

      显示的定义使用的处理器:SetHandler

         <Location /URL>

               SetHandler server-status

         </Location>

         其也可以定义访问控制,包括基于IP的认证和基于用户的认证

  实例:

      <Location /server-status>

          SetHandler sever-status

          AuthType Basic

          AuthName "Sever Status"

          AuthUserFile "/etc/http/conf/.htpasswd"

          Require valid-user

          Order deny,allow

          Allow from all

       </Location>

18、使用mod_deflate模块压缩页面优化传输速度,可以写为一行,也可以写多行,默认为gzip

   SetOutputFilter DEFLATE

   <IfModule mod_deflate.c>

   # 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)默认为6

       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

   </IfModule>

18、资源限定

    软限制:可以超出的限制,但仅能超出一定时长

    硬限制:绝对不能超出的限制

    ulinit:只能修改软连接

       -n [N]:显示或修改能打开的最大的文件句柄数

       -u [N]:显示或修改能打开的最大进程数

    如果要修改硬限制

      /etc/security/limits.conf或者配置tc/security/limits.d/*.conf

     格式为

       对谁进行限制   类型 要限制的选项  值

测试工具

 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的常用选项:


  -A/--user-agent <string> 设置用户代理发送给服务器,即告诉服务器浏览器为什么

  -basic 使用HTTP基本验证

  --tcp-nodelay 使用TCP_NODELAY选项

  -e/--referer <URL> 来源网址,跳转过来的网址

  --cacert <file> 指定CA证书 (SSL)

   --compressed 要求返回是压缩的形势,如果文件本身为一个压缩文件,则可以下载至本地

  -H/--header <line>自定义头信息传递给服务器

  -I/--head 只显示响应报文首部信息

  --limit-rate <rate> 设置传输速度

  -u/--user <user[:password]>设置服务器的用户和密码

  -0/--http1.0 使用HTTP 1.0

测试工具

ab工具的初步使用

  -c 模拟的并发数

  -n 模拟的总请求数

 一般并发数应该小于等于请求数

 http_load webbench seige(只做参考)

http的扩展功能

 apachectl

     Apache HTTP服务控制工具

  ab

     Apache HTTP服务器性能测试工具

  apxs

     Apache 扩展工具

  configure

      配置源代码

  dbmmanage

      为基本认证创建和更新DBM格式的用户认证文件

  htcacheclean

      清理磁盘缓存

  htdigest

      为摘要认证创建和更新用户认证文件。

  htdbm

     操作 DBM 密码数据库。

  htpasswd

     为基本认证创建和更新用户认证文件。

  httxt2dbm

     为 RewriteMap 创建 dbm 文件。

  logresolve

      将 Apache 日志文件中的 IP 地址解析到主机名称。

  rotatelogs

      不关闭 Apache 而切换日志文件。

  suexec

       执行外部程序前切换用户。


你可能感兴趣的:(配置文件,IP地址,压力测试)