apache2.4:参数优化(一)

时间:2017-04-10 09:58:32   收藏:0   阅读:2079

   小生博客:http://xsboke.blog.51cto.com

   小生 Q Q:1770058260



                                -------谢谢您的参考,如有疑问,欢迎交流


一、 Apache优化:工作模式

   Apache2.4版本有三个模式,preforkworkerevent,而在apache2.4版本之前没有event工作模

   式,查看工作模式:httpd  -V

  1. 线程与进程的区别

    l  进程:维护程序所需资源,不处理用户的请求

    l  线程:处理应用所需要完成的操作,在此也就是处理用户的请求

    l  一个程序至少有一个进程,一个进程至少有一个线程

    l  进程在执行过程中有独立的内存单元,而线程共享进程的内存单元

  2. Prefork工作模式

    l  Prefork首先创建多个子进程,然后每个子进程只有一个线程,通过线程处理客户端请求,所以prefork每个进程只能处理一个请求

    l  优点:Prefork适用于对稳定性和效率要求较高的生产环境,因为每个线程都独享一个进程

    l  缺点:在处理多并发高负载时,prefork工作模式将占用大量的内存

例:配置prefork工作模式

       Prefork参数配置:httpd-mpm.conf

       技术分享


       Apache的主配置文件:httpd.conf

       技术分享

       技术分享

       重启apache服务,并查看工作模式

       技术分享

3. Worker工作模式

  l  Worker首先创建多个子进程,然后每个子进程创建多个线程,一个线程可以处理一个请求,所以

   worker工作模式中一个子进程可以处理多个请求

  l  优点:适用于高并发的生产环境,因为线程是共享子进程的内存的,所以内存占用较少

  l  缺点:如果一个线程出现问题,也会导致同一子进程下的其他线程出现问题

  例:配置worker工作模式

    worker参数配置:httpd-mpm.conf

   技术分享


   Apache的主配置文件:httpd.conf

   技术分享

   技术分享

   重启httpd服务,并且查看工作模式

   技术分享

4. Event模式

  l  Event就是worker模式的变种,他解决的keep-alive长连接的时候占用线程资源被浪费的问题,

   在event模式中会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时

   候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处

   理。

  l  缺点:event模式不能很好的支持https的访问(HTTP认证相关的问题)。

二、 Apache优化:配置参数

  技术分享

三、 Apache优化:开启Gzip压缩传输

未使用Gzip压缩时

技术分享

使用Gzip压缩后

技术分享

压缩传输需要的模版:mod_deflate.somod_headers.so

技术分享

  1. 安装压缩传输需要的模版

    l  可以使用DSO方式安装,上面已经讲解过安装方法,这里不再复述

    l  在生产环境中,因为是动态安装的模版,安装模版后,最好使用httpd的优雅启动去重新加载配置,这样不会影响httpd服务的运行

技术分享

 2. 修改httpd.conf配置文件

   启用deflateheaders模版

   为了方便调用libz.so

   执行命令:ln -s  /usr/local/zlib/lib/libz.so  /usr/lib/

   技术分享

   添加压缩传输的相关代码

   技术分享

   还可以设置日志输出:就是将输入输出的流量记录到日志(生产环境一般不用)

   技术分享

   重启httpd服务

   技术分享

 3. 测试

   首先在存放网页的目录下创建两个文件,一个.png文件(不进行压缩传输),一个.php文件(进行

   传输压缩)

   本例使用的是QQ浏览器

   首先访问png结尾的图片

   技术分享

   访问php网页

   技术分享

   通过查看日志验证

   技术分享

四、 Apache优化:expires缓存

   Mod_expires模块可以通过在客户机上缓存,减少20%-30%左右的重复请求

   1. 首先查看未启用时的应答报文

   技术分享

   2. 启用expires模块

     修改httpd.conf配置文件,启用expires模版。并且添加expires配置规则

     技术分享

     技术分享

   ExpiresByType命令格式:

   ExpiresByType   type/encoding  "<base>   [plus]  {<num> <type>}"

 解释:

  3. 重启httpd服务,并且进行验证

   技术分享

    通过curl命令获取响应头部

   技术分享

五、 apache优化:禁止目录遍历

   当找不当某个web服务器的页面时,浏览器将会遍历整个web目录,并且显示,这样是极不安全的


   没有禁止遍历目录前

   技术分享

   技术分享

   1. 修改httpd主配置文件,禁止目录遍历

    技术分享

    2. 重启服务,并且进行测试


    技术分享

    技术分享

六、 Apache优化:在应答首部中隐藏版本信息

    未隐藏前

    技术分享

    在应答报文中包含程序名及其版本号,是极不安全的,这很有可能成为攻击者的一个机会

  1. 隐藏版本号

   apache安装后,就只能隐藏版本号了,程序名是隐藏不了的

   现在我们隐藏版本号


   首先修改模版文件:htttpd-default.conf文件

   技术分享

   然后修改httpd.conf配置文件

   技术分享

   重启httpd服务,使配置生效

   技术分享

   然后再次查看相应报文,发现server只标识了程序名,版本号被隐藏

   技术分享

  2. 自定义程序名和版本号

   必须在编译安装apache前,通过修改源码文件,才能实现隐藏程序名

   首先修改源码包include目录下的ap_release.h文件

   技术分享

   将这些值修改为自己想要的值,然后再编译安装,应答报文里面的程序名及其版本号就彻底改

   变

   我将这些值修改为:

   技术分享

   然后编译安装,访问web服务器,发现响应报文不再显示真正的程序名和版本号

   技术分享

 


本文出自 “小生BK” 博客,请务必保留此出处http://xsboke.blog.51cto.com/12096269/1914370

原文:http://xsboke.blog.51cto.com/12096269/1914370

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!