设为首页 收藏本站
查看: 665|回复: 0

[经验分享] Apache的常用配置

[复制链接]

尚未签到

发表于 2016-12-31 11:04:25 | 显示全部楼层 |阅读模式
  

  
  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服务的运行情况
  
  [iyunv@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
  作如下修改:
  lServerTokensFull 修改为ServerTokens Prod
  lTimeout300 可修改为 Timeout 100
  lMaxKeepAliveRequests100 可根据机器配置适当加大
  
  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下面的内容

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-321975-1-1.html 上篇帖子: Apache MINA (2) Hello World! 下篇帖子: APACHE +TOMCAT配置负载均衡
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表