深度优化Apache
关于Apache的优化分为以下几个步骤:
Apache的Gzip(deflate)功能;
Apache的缓存设置;
Apache禁止目录遍历;
Apache隐藏版本目录;
Apache日志分割;
Apache配置防盗链;
一、Apache的gzip(deflate)功能gzip可以极大的加速网站,使用gzip功能有时压缩比率高到80%以上,最少都有40%以上,所以说gzip功能是非常强大的,还是不错的。
在Apache2之后的版本,模块名不叫gzip,而叫mod_deflate
未使用gzip时,网页中传输文件的过程,如图:
使用gzip时,网页中传输文件的过程,如图:
本次博文案例环境,可以参考博文:Apache的安装部署及工作模式详解
如果要使用gzip(deflate)的功能,一定要打开两个模块:
LoadModule deflate_module modules/mod_deflate.so //模块的作用:对传输到客户端的代码进行gzip压缩 LoadModule headers_module modules/mod_headers.so //模块的作用:告诉客户端的浏览器,传输的文件使用了gzip压缩。如果不开启的话,则无法正常显示网页内容 [[email protected] ~]# apachectl -M | grep deflate //检查mod_deflate模块是否安装,如果没有任何返回信息则表示没有安装安装方法有两种:
编译时添加“--enable-deflate”选项即可安装;
使用DSO方式进行安装;
本身Apache已经安装完成,所以这里就是用DSO方式进行安装了
[[email protected] ~]# cd /usr/src/httpd-2.4.23/modules/filters/ //切换到Apache源码包mod_deflate所在的目录下 [[email protected] filters]# /usr/local/http-2.4.23/bin/apxs -c -i -a mod_deflate.c //使用apxs命令进行安装apxs命令参数的解释:
-i:表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录中;
-a:表示会自动增加一个 LoadModule 行到 httpd.conf 文件中,以启用此模块,或者,如果 此行已经存在,则启用之;
-c:表示需要执行编译操作。
在安装过程中会出现这样的错误信息,如图:
这样的错误信息即表示缺少zlib-devel的安装包,使用“yum -y install zlib-devel”即可,再次重新安装mod_deflate模块!
检查Apache主配置文件出现以下情况:
[[email protected] ~]# apachectl -t httpd: Syntax error on line 104 of /usr/local/http-2.4.23/conf/httpd.conf: Cannot load modules/mod_deflate.so into server: /usr/local/http-2.4.23/modules/mod_deflate.so: undefined symbol: inflate解决方法:
需要在Apache主配置文件的 LoadModule deflate_module modules/mod_deflate.so 这行的上一行添加LoadFile /usr/local/zlib/lib/libz.so
即可,如图:
接下来修改Apache主配置文件,使其开启gzip压缩传输功能:
LoadModule deflate_module modules/mod_deflate.so //这个模块的作用:对传输到客户端的代码进行gzip压缩 LoadModule headers_module modules/mod_headers.so //这个模块的作用:告诉客户端的浏览器,传输的文件使用了gzip压缩。如果不开启的话,则无法正常显示网页内容 //查看Apache主配置文件必须保证这两个模块已经被启用在Apache主配置文件中(个人建议在末尾)添加如下内容:
<IfModule mod_deflate.c> //表示需要启用mod_deflate模块 DeflateCompressionLevel 9 //压缩程度的等级 SetOutputFilter DEFLATE //设置输出过滤器,对输出启用压缩功能 AddOutputFilterByType DEFLATE text/* //设置对文件是文本格式的进行压缩 SetEnvIfNoCase Reques t_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary //设置不对后缀为 gif,jpg,jpeg,png 的图片文件进行压缩。?:表示不会捕获 ( )里内容了 </IfModule> //以下内容是设置日志输出 DeflateFilterNote Input input_info //声明输入流的 byte 数量 DeflateFilterNote Output output_info //声明输出流的 byte 数量 DeflateFilterNote Ratio ratio_info //声明压缩的百分比 LogFormat ‘"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)‘ deflate //声明日志格式 CustomLog logs/deflate_log.log deflate //指定日志的存放路径温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/42805.html