啓用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類型文件