zoukankan      html  css  js  c++  java
  • Apache经常使用配置


     

    Apache採用IBM HTTPServer,内核为Apache/2.0.47

    Server version: IBM_HTTP_Server/6.1.0.13 Apache/2.0.47

     

    查看IBM HTTPServer的版本号的命令

    apache.exe -V   

    ./apachectl -V 4

     

    注:IBM HTTPServer是包装Apache后增强了部分功能

    普通Apache下的版本号查看命令

    ./apachectl –v

    若新配置Apache,建议安装最新版本号的Apache

    眼下最新版本号:2.2.26。可用Apache站点提供源代码在linux下进行编译

    最新window的安装包:2.2.25

    注:Apache已经推出2.4的版本号。对静态内容响应比2.2的版本号快。

     

    主要针对下面变更

    1、 trace方法的漏洞

    2、 定义了404和403错误显示页面,取代了原来的默认页面

    3、 取消了apache的返回显示签名,取消错误页面时的版本号显示。

    4、 取消的文件夹内容列出的配置。

    5、 Apache的内容输出压缩配置。

    6、 Apache的status监控时默认地址的改动。

    7、 Apache虚拟主机配置

    8、 Apache默认的线程数的调整 含window和linux下

    9、 Apache循环日志的设置

    10、           Linux下Apache日志定时清除设置

    11、           Apache的默认參数改动

    12、           Apache的proxy功能启用

    13、           Apache的缓存功能设置

     

    在安装apache后。须要对默认配置进行改动。以增强一下默认的安全性配置。

    每一个具体的配置步骤例如以下:

    1、 针对Apache2.0.55曾经的版本号,须要进行例如以下改动

    放开rewrite模块

       LoadModule rewrite_modulemodules/mod_rewrite.so

     

       添加例如以下配置

            RewriteCond %{REQUEST_METHOD} ^TRACE

            RewriteRule .* - [F]

     

       若是Apache 2.0.55版本号以上的apache,则需在http.conf中添加例如以下配置

    TraceEnableOff

    2、  定义404和403错误显示页面

    在虚拟主机的配置处。添加例如以下配置,并将相应的错误页面复制到根文件夹下

         ErrorDocument 404 /404.html

     ErrorDocument 403 /403.html

     以覆盖默认的配置

    3、  取消apache的版本号返回显示签名

    在http.conf中搜索例如以下配置。将

    ServerSignature On 改为 ServerSignature Off

     

    眼下版本号apache均是将配置分散到多个conf文件里,可改动httpd-default.conf文件里的配置,注意在http.conf文件里将

    #Include conf/extra/httpd-default.conf

    改动为

    Include conf/extra/httpd-default.conf,将#号取消

    4、  取消文件夹内容列出配置

    方法一,改动 httpd.conf配置文件,查找Options Indexes FollowSymLinks,改动为 Options -Indexes;

    方法二,在www 文件夹下的改动.htaccess配置文件,增加Options -Indexes。 (推荐)

    apache的配置是在虚拟主机的配置中例如以下配置

      <Directory"/xxx/www">

        Options –IndexesFollowSymLinks

       AllowOverride None

        Orderallow,deny

        Allow fromall

           </Directory>

      注意将FollowSymLinks清除掉,并将Indexs改为 -Indexs

    5、  Apache的内容输出压缩配置

    按例如以下配置进行页面压缩配置

    LoadModuledeflate_module modules/mod_deflate.so

    <IfModulemod_deflate.c>

               SetOutputFilter DEFLATE

                SetEnvIfNoCase Request_URI.(?

    :gif|jpe?

    g|png|bmp|swf|cab)$ no-gzip dont-vary

                SetEnvIfNoCase Request_URI.(?:exe|t?

    gz|zip|bz2|sit|rar)$ no-gzip dont-vary

                SetEnvIfNoCase Request_URI.(?

    :pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary

              # SetEnvIfNoCase Request_URI/.(gif|jpg|cab|jpe?g|exe|bmp|mp3|rar|zip|swf|png)$ no-gzip dont-vary

     

                AddOutputFilterByType DEFLATEtext/html text/plain text/xml text/css text/javascript

                AddOutputFilterByType DEFLATEapplication/ms* application/vnd* application/postscript application/javascriptapplication/x-javascript

                SetEnvIf User-Agent ^Mozilla/4 gzip-only-text/html

                SetEnvIf User-Agent ^Mozilla/4/.0[678]no-gzip

                SetEnvIf User-Agent MSIE !no-gzip

                SetEnvIf User-Agent MSIE!gzip-only-text/html

              # SetEnvIfNoCase Request_URI/.(gif|jpg|cab|jpe?

    g|exe|bmp|mp3|rar|zip|swf|png)$ no-gzip dont-vary

         DeflateCompressionLevel 9

    </IfModule>

    6、  Apache的status监控时默认地址的改动

    Apache中的默认设置为

      <Location /server-status>

        SetHandler server-status

        Order deny,allow

    #    Deny from all

        Allow from .localhost

    </Location>

    此种设置不安全,假设启用status监控须要改动默认地址。若启动虚拟主机,则在每一个虚拟主机节点中进行配置,方有效。即在

    <VirtualHost *:80>

      <Location /test-server-status>

        SetHandler server-status

        Order deny,allow

    #    Deny from all

        Allow from .localhost

    </Location>

    </VirtualHost >

    之间配置

    若无虚拟主机则正常配置

    <Location /test-server-status>

        SetHandler server-status

        Order deny,allow

    #    Deny from all

        Allow from .localhost

    </Location>

           将server-status的默认值须要改动一下。避免此处的安全漏洞

    注:若要启动扩展状态监控

    即  配置

    ExtendedStatus On 

    注意:

    ExtendedStatus On不能配置在单独的虚拟主机节点内,须要在httpd.conf中配置

    可參考: httpd-info.conf文件里的配置

     

    7、  Apache的虚拟主机配置

    NameVirtualHost *:80

     

    <VirtualHost *:80>

           ServerName www.test.cn

           ServerAlias www.test.edu.cn

           DocumentRoot /test/www

           AddDefaultCharset Off

     

      <Directory"/test/www">

        Options-Indexes

       AllowOverride None

        Orderallow,deny

        Allow fromall

     </Directory>

      ErrorDocument404 /404.html

      ErrorDocument403 /403.html

    </VirtualHost>

           虚拟主机按以上进行配置,对于新版本号的apache注意将

      # Virtual hosts

      #Include conf/extra/httpd-vhosts.conf

    处进行改动

    Includeconf/extra/httpd-vhosts.conf

    在httpd-vhosts.conf文件里进行虚拟主机的配置

    8、  Apache默认线程数调整

    对2.2版本号的apache,在httpd.conf文件里将

      # Include conf/extra/ httpd-mpm.conf改动为

      Include conf/extra/ httpd-mpm.conf

     并在此文件里寻找到此处

    # WinNT MPM

    # ThreadsPerChild:constant number of worker threads in the server process

    #MaxRequestsPerChild: maximum  number ofrequests a server process serves

    <IfModulempm_winnt_module>

        ThreadLimit          2000

        ThreadsPerChild      2000

        MaxRequestsPerChild    100

    </IfModule>

      此处是将线程的限制改动到2000。注意window改动2000的限制在window下会报一些错误,由于window下默认达不到2000。一般仅仅能到1912左右。要想突破2000的限制。须要使用ThreadLimit指令

        Linux下须要对下面模块设置,linux下Apache默认工作模式是prefork

    可通过 ./apachectl –l来查看apache的工作模式

    Window下通过 httpd.exe –l来查看

    注:须要在apache的安装文件夹下的bin文件夹中

    # prefork MPM

    # StartServers: number of server processesto start

    # MinSpareServers: minimum number of serverprocesses which are kept spare

    # MaxSpareServers: maximum number of serverprocesses which are kept spare

    # MaxClients: maximum number of serverprocesses allowed to start

    # MaxRequestsPerChild: maximum number ofrequests a server process serves

    <IfModule mpm_prefork_module>

       StartServers          5

       MinSpareServers       5

       MaxSpareServers      10

       MaxClients          150

       MaxRequestsPerChild   0

    </IfModule>

         Linux下若调整线程数则调整以上数字。重点调整MaxClients

       配置例子,须要依据机器的配置进行调整:

     <IfModulempm_prefork_module>

       StartServers          10

       MinSpareServers      10

       MaxSpareServers      20

       MaxClients          1500

       MaxRequestsPerChild  10000

    </IfModule>

     

    9、  Apache循环日志配置

    Linux下的配置例子:

    /usr/local/apache 为apache的安装文件夹,依据实际情况改动

    ErrorLog "| /usr/local/apache/bin/rotatelogs /usr/local/apache/logs/%Y_%m_%d_test-error.log86400 480"

    CustomLog "logs/test-access.log" common

     

    Window下配置

    ErrorLog "| bin/rotatelogs.exe logs/%Y_%m_%d_test-error.log 86400480"

     

    10、           Linux下Apche日志定时清除

    按下面配置就可以

    1、root用户登录,检查crond服务的执行情况

     

    [root@CentOS-APP2]#service crond status

    crond (pid  3698) 正在执行...

     

    若没执行,则

    service crondstart

     

    2、在/usr/local/testweb下编写运行脚本

     

    vi clean-log

     

    拷贝例如以下脚本:

    #! /bin/sh

    #cd $(dirname $0)|| exit 1

    logdir=/usr/local/apache/logs/test-com/

    cd ${logdir}

    declare -ifilesum=`ls test_access* |wc -l`

    declare -idelnum=$filesum-30

    #echo ${delnum}

    if [ "${delnum}"-ge 1 ]; then

     rm -rf `ls -tr test_access* | head -${delnum}`

    fi

    declare -i filesumerr=`lstest_error* |wc -l`

    declare -idelnumerr=$filesumerr-30

    if [ "${delnumerr}"-ge 1 ]; then

     rm -rf `ls -tr test_error* | head-${delnumerr}`

    fi

     

    拷贝脚本时,请注意日志文件夹的实际位置和要清理的日志文件的命名格式。须要保持一致

     

    这里的日志文件夹:

    /usr/local/apache/logs/test-com/

     

    要清理的日志格式:

    test_access_20131223.log

    test_error_20131223.log

     

    设定要清理的日志数量,设定为30。超过30个日志文件则清理

    3、设定执行权限

    cd /usr/local/testweb

    chmod 755clean-log

     

    4、设定定时执行

    设定为每月30日晚1点30分定时运行

     

    30 1 30 * */usr/local/testweb/clean-log

     

    /usr/local/testweb/clean-log  为编写好的日志清除脚本

    设定方法:

    root用户登录后运行:

    crontab -e

     

    打开一个文件,用vi的方式进行编辑

     

    输入

    30 1 30 * */usr/local/testweb/clean-log

     

    然后:wq退出保存

     

    可在/var/spool/cron/文件夹下看到此文件

    root

    与所设定的username一致

    5、运行

    service crondreload  又一次载入配置执行

    6、測试

     

    測试时能够运行

    crontab -e 编辑设定的文件,添加例如以下配置,每分钟定时,可先改动脚本,将日志文件数降低。如将30变为3

     

    */1 * * * */usr/local/testweb/clean-log

     

    能够在/usr/local/apache/logs/test-com/文件夹下用vi命令按test_access_20131202.log的文件命名格式来建若干个空文件,以測试是否可定时删除文件

    能够tail -n 100 /usr/spool/mail/root 查看错误

    tail -f /var/log/cron  查看执行日志

    11、           Apache默认參数改动

    改动此文件

    Include conf/extra/httpd-default.conf

    作例如以下改动:

    l       ServerTokensFull   改动为  ServerTokens Prod

    l       Timeout300  可改动为 Timeout 100

    l       MaxKeepAliveRequests100  可依据机器配置适当加大

     

    12、           Apache的proxy功能启用

    启用代理须要在httpd.conf文件放开下面两个模块

     

    LoadModule proxy_module modules/mod_proxy.so

    LoadModule proxy_http_module modules/mod_proxy_http.so

     

    然后启用虚拟主机,在此句之后

    NameVirtualHost*:80

     

    添加例如以下:

    <VirtualHost *:80>

           ProxyPreserveHost On

           ProxyPass /  http://172.16.0.2:9090/portal/

            ProxyPassReverse/  http://172.16.0.2:9090/portal/

           ServerName test.xxx.cn

           ServerAlias test.xxx.edu.cn

        </VirtualHost>

    13、           Apache的缓存功能设置

    Apache的缓存功能须要开启下面模块

    #LoadModule cache_module modules/mod_cache.so

    #LoadModule mem_cache_module modules/mod_mem_cache.so

    缓存有两种:1、内存中缓存;2、磁盘缓存

    此处解说内存中缓存

    配置例子:

     

    <IfModulemod_cache.c>

        <IfModule mod_mem_cache.c>

            CacheEnable mem /image       #要缓存文件夹

            CacheEnable mem /images

            CacheEnable mem /js

            CacheEnable mem /style

               CacheEnable mem /css

            CacheEnable mem /script

            CacheEnable mem /swf

            CacheEnable mem /file

            MCacheMaxObjectCount 20000    #缓存对象数量

            MCacheMaxObjectSize 1048576   #缓存对象最大大小 字节

            MCacheMaxStreamingBuffer 65536

            MCacheMinObjectSize 10         #缓存对象最小大小 字节

            MCacheRemovalAlgorithm LRU    #缓存的算法

            MCacheSize 2097152            #缓存的大小 kb

            CacheMaxExpire 14400          #缓存最大过期时间

            CacheDefaultExpire 14400

        </IfModule>

    </IfModule>

     

    配置说明:

    1,CacheEnablemem /images 缓存images以下的内容,这里的 mem仅仅是一个缓存类型,指示mod_cache使用内存的存储管理器通过实施mod_mem_cache 。缓存类型disk指示mod_cache使用基于磁盘的存储管理的实施mod_disk_cache 。缓存类型,fd指示mod_cache使用文件描写叙述符缓存实施mod_mem_cache

    2,MCacheSize最大内存使用量,插入在缓存和对象大小的对象是大于剩余内存,将被删除,直到新的对象能够被缓存。 被删除的对象选择使用指定的算法MCacheRemovalAlgorithm

     

    3,MCacheRemovalAlgorithm缓存算法:

    LRU (近期最少使用)

    LRU删除文件,没有时间最长的被訪问的。

    GDSF(GreadyDual尺寸)

    GDSF分配一个优先的文件缓存文件的费用的基础上。缓存大小。以最低的优先权文件被删除第一次。

    4,MCacheMaxObjectCount最大缓存对像个数

     

    5。MCacheMaxObjectCount最大缓存对像字节数

     

    6,MCacheMinObjectSize最小缓存对像字节数

     

    7。CacheMaxExpire最大缓存结止时间

     

    8,CacheDefaultExpire  默认缓存结止时间

     

    9,CacheDisable/php       不要缓存php以下内容

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    django 项目 crm 关于展示表的细节
    djagngo crm 项目 展示页面 和分页
    django项目 crm登录 注册
    django项目 crm表结构一些常用的字段
    django认证 auth
    django form组件
    json和ajax技术
    VS 2013编译64位版本QT 4.8.6及使用cmake为依赖QT生成VS项目时Could NOT find Qt4
    使用国内pypi源来安装python包
    [转]ubuntu 下无法启动chrome
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4829722.html
Copyright © 2011-2022 走看看