Apache的常用配置

jopen 10年前發布 | 134K 次閱讀 Apache Web服務器

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 \bMSIE !no-gzip

            SetEnvIf User-Agent \bMSIE!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

與所設定的用戶名一致

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下面的內容

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!