启用Apache的deflate模块,可以开启压缩功能,减小网站传输时的带宽。
apache需要编译安装方式,以/usr/local/apache为apache的安装目录,以源码包/usr/local/src/httpd-2.4.33为例
首先查看/usr/local/apache/bin/apachectl -M ###查看里面的模块是否有deflate模块,也可以过滤一下/usr/local/apache/bin/apachectl -M | grep deflate
若有则到httpd.conf下面开启,如果没有显示,或者用grep过滤后显示Syntax OK,则说明模块没有安装。
以动态共享模块方式(DSO)编译安装deflate模块
/usr/local/apache/bin/apxs -c -i -a /usr/local/src/httpd-2.4.33/modules/filters/mod_deflate.c #其中前面部分是安装好的apache软件里面的apxs程序,后面是apache的源码安装包里面的deflate压缩模块
apxs程序编译选项:
-c 表示执行编译模块操作
-i 表示执行安装模块操作
-a 表示自动添加一个LoadModule行到httpd.conf文件中,以激活该模块
注意:如果提示-bash: /apache/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory。请安装perl,perl-devel
yum install perl perl-devel
安装完成后修改apxs脚本: vi /usr/local/apache/bin/apxs,将第一行“#!/replace/with/path/to/perl/interpreter -w”修改为#!/usr/bin/perl -w,wq保存退出,然后再次编译该模块
安装完成后,vi /usr/local/apache/conf/httpd.conf中查看该模块是否安装及激活
LoadModule deflate_module modules/mod_deflate.so
注意:如果启动apache提示httpd: Syntax error on line 105 of /apache/conf/httpd.conf: Cannot load modules/mod_deflate.so into server: /apache/modules/mod_deflate.so: undefined symbol: inflate
则说明deflate模块没有找到zlib的库,可以先安装zlib,zlib-devel
yum install zlib zlib-devel
然后手动在httpd.conf下 加入以下命令
LoadFile /usr/lib64/libz.so ##libz.so为deflate压缩模块所需要的库文件
<ifmodule mod_deflate.c>
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/xhtml+xml application/xml application/rss+xml application/atom_xml application/x-javascript application/x-httpd-php image/svg+xml image/gif image/png image/jpe image/swf image/jpeg image/bmp application/javascript
</ifmodule>
DeflateCompressionLevel 9 ###压缩等级(1-9),等级越大效率越高,但同时消耗的CPU也高,根据具体情况调优,也可以设置为6来平衡CPU及压缩质量
AddOutputFilterByType ##仅压缩限制特定的MIME类型文件
转载于:https://blog.51cto.com/taoyeno1/2097238