43tt 发表于 2014-5-12 11:37:44

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

本文主要讲述httpd的主配置文件中可以配置的选项以及参数,以2.2系列的为主,在http2.4以后会添加一些新的功能和模块,配置文件可能也会有一些差别,关于2.4的配置文件将在后续推出,敬请期待!
   如果httpd是yum安装或者是rpm包安装的话,主配置文件会默认保存在/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf为主配置文件的辅助性配置文件
1、监听套接字
Listen 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 no-gzip
   # MSIE masquerades as Netscape, but it is fine
       BrowserMatch \bMSI !no-gzip !gzip-only-text/html
   </IfModule>
18、资源限定
   软限制:可以超出的限制,但仅能超出一定时长
   硬限制:绝对不能超出的限制
   ulinit:只能修改软连接
      -n :显示或修改能打开的最大的文件句柄数
      -u :显示或修改能打开的最大进程数
   如果要修改硬限制
       /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
       执行外部程序前切换用户。


页: [1]
查看完整版本: httpd二之主配置文件详解、测试工具、压力测试ab