当前位置: 首页 > news >正文

Apache配置优化

1、取消目录浏览

默认配置下,如果目录默认首页不存在的话,apahce将会生成目录文件列表。但是这个是不安全的。

查找所有包含以下内容的配置块


将红色内容改成 –index,就是在前面加多一个负号

2、 日志切割,按日期生成日志文件

默认配置下,所有日志将存放于一个文件。一方面所有日志都在一个文件,不好分析管理,另一方面随着文件越来越大,也影响到apache性能。

错误日志:

#ErrorLog "logs/error.log"

ErrorLog "|bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 86400"

访问日志:

#CustomLog "logs/access.log" common

CustomLog "|bin/rotatelogs.exe -l logs/access-%Y-%m-%d.log 86400" common

另外修改日志记录级别:

LogLevel error

3、禁止向客户端发送服务器信息

默认配置下,apache会向客户端发生服务器信息,包含操作系统信息,apahce版本信息,apahce模块信息等等。这些信息都会影响到服务器安全。

ServerSignature Off

ServerTokens Prod

4、限制apache处理的http协议

通过以下配置,限制apache只处理Get和Post数据,有助于提高服务器的安全性

5、保持连接和响应超时

使用保持连接功能,使得apache可以在一个连接中处理客户端多个请求,可以提高服务器的性能。这个功能最好配合超时功能一起使用。但是,如果服务器繁忙,请求过多则应关闭这个功能。尽管KeepAlive方式能减少TCP连接数量和网络负载,但是KeepAlive需要和线程绑定,这就导致一个繁忙的服务器会耗光所有的线程。

打开保持连接功能:

KeepAlive On

在使用保持连接功能时,客户一次请求连接能响应文件的最大上限:

MaxKeepAliveRequests 100

在使用保持连接功能时,两个相邻的连接的时间间隔超过3 秒,就切断连接

KeepAliveTimeout 3

若30 秒后没有收到或送出任何数据就切断该连接:

Timeout 30

6、使用Apache MPM(多路处理模块)

Apache MPM可以通过优化apache内部进程的调度来提高apache的处理能力。

取消以下配置的注释(去掉前面的#号)

Include conf/extra/httpd-mpm.conf

具体配置细节可以打开这个文件httpd-mpm.conf

通过“httpd -l”可以查看当前加载了具体哪个mpm模块,然后再针对这个模块做优化。

StartServers 指令设置了服务器启动时建立的子进程数量。因为Apache子进程数量取决于实际负载动态调整,所以调整这个参数意义不大。不同的MPM默认值也不一样。

StartThreads指令设置了服务器启动时建立的线程数量。因为Apache线程数量取决于实际负载动态调整,所以调整这个参数意义不大。

MaxClients 指令设置了允许同时伺服的最大接入请求数量。任何超过MaxClients限制的请求都将进入等候队列,直到达到ListenBacklog指令限制的最大值为止。一旦一个链接被释放,队列中的请求将得到服务。

MaxRequestsPerChild 指令设置了每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:1、可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。2、给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

ThreadsPerChild 指令设置了每个子进程建立的线程数。子进程在启动时建立这些线程后就不再建立新的线程了。如果使用一个类似于mpm_winnt只有一个子进程的MPM,这个数值要足够大,以便可以处理更多的请求。如果使用一个类似于worker有多个子进程的MPM,每个子进程所拥有的所有线程的总数要足够大,以便可以协同处理所有的请求。

更多可以查看apache关于mpm的文档:http://httpd.apache.org/docs/2.2/mod/mpm_common.html

相关文章:

  • hdu1010 Tempter of the Bone 成长---纠错
  • lucene 4.x中如何只存储不做索引
  • Win32_8有意思的程序——抓取屏幕
  • php调试和日志记录函数
  • Android实战技术:IPC方式简介教程
  • SICP 习题(1.1,1.2,1.3,1.4)解题总结。
  • linux终端开发环境的配置
  • ADO.NET理论+实践
  • Android实战技术:深入理解Android的RPC方式与AIDL
  • Linux调试器工作原理——基础篇
  • Linux调试器工作原理之二——实现断点
  • 学ACM有用吗?
  • Linux调试器工作原理之三——调试信息
  • hdu1501 Zipper
  • Android实战技术:理解Binder机制
  • 【node学习】协程
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • leetcode46 Permutation 排列组合
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • React Native移动开发实战-3-实现页面间的数据传递
  • sublime配置文件
  • Web设计流程优化:网页效果图设计新思路
  • 关于 Cirru Editor 存储格式
  • 区块链将重新定义世界
  • 我的面试准备过程--容器(更新中)
  • 鱼骨图 - 如何绘制?
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 整理一些计算机基础知识!
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • $(function(){})与(function($){....})(jQuery)的区别
  • (4) PIVOT 和 UPIVOT 的使用
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (笔试题)分解质因式
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (过滤器)Filter和(监听器)listener
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (算法)Game
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • @Autowired自动装配
  • @html.ActionLink的几种参数格式
  • @NestedConfigurationProperty 注解用法
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [Android] Android ActivityManager
  • [Android学习笔记]ScrollView的使用
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • [cocos creator]EditBox,editing-return事件,清空输入框
  • [CTO札记]盛大文学公司名称对联
  • [C语言]编译和链接
  • [Editor]Unity Editor类常用方法