apache 2.2 配置参数详解

安装httpdjavascript

    yum -y install  httpdphp

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

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

    运行目录:/etc/httpdjava

    配置文件:web

     主配置文件:/etc/httpd/conf/httpd.conf正则表达式

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

     Socket:80/tcp,443/tcp数据库

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

         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>


四、DSO模块的加载方式

   LoadModule module_name /path/to/module

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

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

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

   httpd -m 列出与加载到全部DSO模块与非DOS模块

      取消 注释掉便可

五、配置站点根目录

    DocumentRoot /path/to/somewhere


六、页面访问属性

    <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


十、配置日志功能

   /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


十一、路径别名

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

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


十二、指定默认的字符集

     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):根据什么进行受权

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

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

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

        options None

        AllowOverride AuthConfig 使用认证配置

        AuthType Basic 使用基本认证

        AuthName "Private Area" 质询时标题

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

        Require vaild-user 可访问的用户


    </Directory>

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

      htpasswd 

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

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

      -m MD5格式存放

      -b 批量模式

      -D 删除用户

    三、基于组认证

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


1七、服务器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>


 1八、ab工具的初步使用

    -c 模拟的并发数

    -n 模拟的总请求数

   通常并发数应该小于等于请求数

   http_load webbench seige(只作参考)

   tcp_copy


1九、使用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

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

相关文章
相关标签/搜索