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以下内容
版权声明:本文博主原创文章,博客,未经同意不得转载。
Apache经常使用配置的更多相关文章
- linux下安装apache与php;Apache+PHP+MySQL配置攻略
1.apache 在如下页面下载apache的for Linux 的源码包 http://www.apache.org/dist/httpd/; 存至/home/xx目录,xx是自建文件 ...
- Apache多站点配置及启动失败解决办法
一. Apache多站点配置方法 1.打开Apache安装目录下conf/httpd.conf文件,找到下面两行文字,把最前面的 # 号去掉,然后保存. #LoadModule vhost_alias ...
- Apache安装及配置ssl
目录 1.windows安装 软件准备 安装apache 开启ssl(Https访问) 打开httpd.conf,解除下面配置的注释 查看ssl模块使用哪一个配置文件 配置https虚拟主机 简单配置 ...
- 配置apache apache服务器如何配置多站点
http://jingyan.baidu.com/article/5225f26b07605be6fa090890.html 让Apache在启动时能加载虚拟主机模块. 打开Apache安装目录下co ...
- wamp apache 的虚拟机配置 多域名访问 的 三部曲
wamp apache 的虚拟机配置 多域名访问 的 三部曲 wamp: 1:C:\WINDOWS\system32\drivers\etc->hosts 加入自己的 ...
- windows下PHP与Apache的安装配置
1.下载安装apache:官网 http://httpd.apache.org/download.cgi#apache24 下载httpd-2.2.25-win32-x86-no_ssl.msi并安装 ...
- apache多站点配置
apache多站点配置 临时需要个测试站,然后就到apache中配置vhosts,结果这货总是显示"拒绝了你的请求",找半天发现居然还要添加端口监听 vhosts.conf 添加v ...
- Apache虚拟主机配置
在一个Apache服务器上可以配置多个虚拟主机,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录.Apache虚拟主机配置有3中方法:基于IP配置.基于域名配置和基于端口配置,这里介 ...
- nginx 反向代理 与 Apache backend的配置联合配置
nginx 反向代理 与 Apache backend的配置联合配置: 说明: nginx 将http映射到Apache上的特定子目录. 配置方法步骤: 1. 设置域名, 子域名映射到指定服务器ip ...
- Windows下Apache+mod_python+Django配置
Windows下Apache+mod_python+Django配置 Apache 首先要安装Apache,我安装的版本是2.2.*: Python python肯定是要安装的,我安装的版本是2.5的 ...
随机推荐
- windows窗口分析,父窗口,子窗口,所有者窗口
(本文尝试通过一些简单的实验,来分析Windows的窗口机制,并对微软的设计理由进行一定的猜测,需要读者具备C++.Windows编程及MFC经验,还得有一定动手能力.文中可能出现一些术语不统一的现象 ...
- Duanxx的STM32学习:STM32下载方式选择
前几天熟悉了STM32的启动方式.主要由Boot0和Boot1设置 如今须要解决的就是STM32的下载的问题. 一開始的时候,我选择的是SWD下载.这样的下载方式须要Boot0=0.Boot1=0.占 ...
- Java面试题之八
四十一.面向对象的特征有哪些方面 四大特征大家都知道:抽象.继承.封装.多态.这是个理解性表述题,每个人的表述方式可能都不一样.下面仅选择一种作为参考: 1.抽象: 抽象——就是忽略一个主题中与当前目 ...
- iOS开展UI一片—简单的浏览器观看节目
iOS开发UI篇-简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 须要读取或改动属性的控件须要设置属性 序号标签 图片 图片描写叙述 左边button 右边button (2 ...
- 数字温湿度传感器DHT11--操作源代码
//IO定义 #define P_DataIN_DHT11 PB0_IN #define P_DataOUT_DHT11 PB0_OUT //宏定义 #define BSET_DHT11 P_Data ...
- DevExpress Util HelpV3
using System; using System.Drawing; using DevExpress.XtraCharts; namespace DevExpressUtilHelpV3 { pu ...
- node.js querystring处理参数
C:\Documents and Settings\Administrator\WebstormProjects\untitled6>node> url{ parse: [Function ...
- js触摸屏案例
js 手机端触发事事件.javascript手机端/移动端触发事件 处理Touch事件能让你跟踪用户的每一根手指的位置.你可以绑定以下四种Touch事件: 1 2 3 4 touchstart: ...
- 第五章SignalR的实时高频通讯
第五章SignalR的实时高频通讯 概述:本例子演示了如果创建一个对象与其他浏览器共享实时状态的应用程序.我们要创建的应用程序为“MoveShape”,该MoveShape页面会显示一个Html Di ...
- android开发时间和日期的代码实现工具类(一)
android开发时间和日期工具类的代码实现: package com.gzcivil.utils; import android.annotation.SuppressLint; import an ...