apache 2.2 配置参数详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache 2.2 配置参数详解相关的知识,希望对你有一定的参考价值。

安装httpd

    yum -y install  httpd

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

       脚本配置文件:/etc/sysconfig/httpd

    运行目录:/etc/httpd

    配置文件:

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

     扩展配置:/etc/httpd/conf.d/*.conf

     Socket:80/tcp,443/tcp

     文档根目录:/var/www/html

         CGI:/var/www/cgi-bin/



日志滚动:

    日志切割

    时间、空间


Docroot:文档根目录


配置文件:

    /etc/httpd/conf/httpd.conf

       配置参数 值

           配置指令不区分字符大小写

           值有可能区分大小写

           有些指令可以重复出现多次


       配置文件格式

            全局配置

            主机配置:用于仅提供一个站点时

            虚拟主机配置:用于提供多个站点时


        配置文件语法测试

            serviice httpd configtest

            httpd -t


        绝大多数配置修改后,可以用过service httpd reload 来生效,如果修改了监听的地址或端口,必须重启服务才能生效


1.监听套接字

  Listen [IP:]port

    此指令可以出现多次,用于指定监听多个不同的套接字

       Listen 80

       Listen 172.16.100.7:8080

2.配置使用Keepalive

   KeepAlive {On|Off}

   KeepAliveTimeout 2 超时时间

   MaxKeepAliveRequests 50 最大连接

3.MPM

   多道处理模块

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

   想使用不同的机制,修改配置文件即可 /etc/syconfig/httpd文件

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

StartServers       8 默认启动的工作进程数

MinSpareServers    5 最少空闲进程数

MaxSpareServers   20 最大空闲进程数

ServerLimit      256 最大活动进程数

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

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

  </IfModule>


<IfModule worker.c>

StartServers         4 启动的子进程的个数

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

MinSpareThreads     25 最少空闲线程数

MaxSpareThreads     75 最大空闲线程数

ThreadsPerChild     25 每个子进程生成的线程数

MaxRequestsPerChild  0 每个子进程在声明周期内最大允许服务的最多请求个数

</IfModule>


4、DSO模块的加载方式

   LoadModule module_name /path/to/module

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

      LoadMoudule php5_module /usr/lib64/httpd/modules/php.so

      让服务重载配置文件方能生效

   httpd -m 列出与加载到所有DSO模块与非DOS模块

      取消 注释掉即可

5、配置站点根目录

    DocumentRoot /path/to/somewhere


6、页面访问属性

    <Direcotry "/path/to/somewhere">

       Options 选项

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

          FollowsymLinks:允许跟随符号链接所指向的原始文件

          None:所有都不启用

          All:所有的都启用

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

          Includes:允许使用mod_include模块实现服务器端包含(SSI)

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

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

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

       AllowOverride

    </Direcotry>

     可以使用正则表达式,使用~

7.基于主机的访问控制

   <Direcotry "/path/to/somewhere">

     Options 

     AllowOverride 

       None 不禁用下面

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

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

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

     Allow from

     Deny from

    </Direcotry>


   如果都匹配或都不匹配时以默认为准

   否则则以匹配到的为准

     Allow from

     Deny from

        IP,Network Address

        172.16

        172.16.0.0

        172.16.0.0/16

        172.16.0.0/255.255.0.0

基于用户做访问控制


8.定义默认主页面

   DirectoryIndex 依次查找


9.用户目录

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

    userdir disablied:禁止

    userdir public_html:

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

           用户的家目录得赋予进行httpd进程的用户拥有执行权限

       setfacl -m u:apache:x ~Username


10、配置日志功能

   /var/log/http/

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

       error.log

      

      访问日志:

        CustomLog "/path/to/log_file" LogFormat

        LogFormat定义日志格式

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

        %h:客户端地址

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

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

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

        \" :转义,显示""

        %r:请求报文的起始行

        %>s:响应状态码,

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

        %{Header_Name}i:记录指定请求报文首部的内容(value)

        %u:请求的URL

        

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

        错误日志:

         ErrorLog


11、路径别名

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

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


12、指定默认的字符集

     AddDefaultCharset 

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

   URL-->FileSystem Directory

   CGI:Common Gateway Interface(通用网关接口)使WEB可以跟一个应用程序进行通信,从通信环境中获得结果。

    CGI是不安全的

      在第一行写入

      echo “Content-Type:text/html:

   mod_alias,mod_cgi

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

   也可以在目录中实现


  格式一般为

   cat << EOF

    Content-Type:text/html

    <pre>

    The time is : `date`.

    </pre>

    EOF


14.基于用户的访问控制

虚拟用户:不是系统用户,只是为了获取某种资源类型的一种虚拟的用户

   文件/etc/httpd/conf/.htpasswd

   SQL数据库

   dbm:

   ldap:轻量级目录访问协议

    认证类型(auth):

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

        digest:摘要认证,hash编码之后发送

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

      authn

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

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

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

    <Directory "/www/htdocs/fin">A

        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>

    将全局中的DocumentRoot""注释掉


   虚拟主机的单独配置

   用户认证

   访问日志

   错误日志

   别名

   脚本别名


   基于IP认证机制,基于用户认证


       http协议认证、表单认证


16.https协议

     x509.3证书格式

         证书格式的版本号

         证书序列号

         证书签名算法

         证书颁发者

         有效期

         持有者的名称

         持有者的公钥

         CA的ID

         持有者的ID

         其他扩展信息

              基本约束

              证书策略

              密钥的使用限制

         CA签名

    ssl握手要完成的工作

         交换协议版本号

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

         对两端实现身份验证

         密钥交换

    http:文本协议 80/tcp

    https:二进制格式的协议 443/tcp


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


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

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

          证书颁发者的可信度

          证书的签名检测:

          持有者的身份检测



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

      可以在/etc/pki/tls/certs

      openssl s_client 

      -connet:验证的地址:端口

      -CAfile:CA证书的路径

    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证书的路径


    URL Rewrite:URL重写


17、服务器status页面

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


    基于URL访问属性

    <Location [~] "">

    </Location >


    基于单个文件的访问属性

     <File [~] "">

     </File>



     也可以使用<LocationMatch "">

     </LocationMatch>来实现正则表达式的配置


     如果要配置其属性的URL能映射到某具体文件系统路径,建议使用<Directory>


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

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



    <Location /URL>

        setHeandler 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、ab工具的初步使用

    -c 模拟的并发数

    -n 模拟的总请求数

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

   http_load webbench seige(只做参考)

   tcp_copy


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


SetOutputFilter DEFLATE


# mod_deflate configuration

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



扩展功能

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

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


20.资源限定

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

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

   ulimit:只能修改软限制

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

       -u [N]:所能够打开的最大进程数

    如果修改硬限制

      /etc/security/limits.conf,扩展配置etc/security/limits.d/*.conf

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


以上是关于apache 2.2 配置参数详解的主要内容,如果未能解决你的问题,请参考以下文章

Apache httpd.conf配置文件AllowOverride参数详解

apache httpd.conf 参数详解

Centos 6 apache httpd 2.2 主要配置详解( 一 )

maven 配置参数详解

Tomcat web.xml配置参数详解

Apache常用目录详解配置文件详解及优化配置文件权限详解