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 \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
與所設定的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以下內容
版權聲明:本文博主原創文章,博客,未經同意不得轉載。
轉載于:https://www.cnblogs.com/hrhguanli/p/4829722.html
總結
以上是生活随笔為你收集整理的Apache经常使用配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS: 转载CoreData数据库框架
- 下一篇: 二叉树的深度和宽度