Apache如何开启Gzip压缩

技术 3631 次围观 5 次吐槽

Apache

因为开启 Gzip 压缩会消耗额外的 CPU 资源,所以我在LAMP一键安装脚本中默认并没有开启 Gzip 压缩。今天被人问及如何添加 Gzip 压缩,步骤很简单,只需修改 Apache 的配置文件并重启一下 Apache 即可。

在开启 Gzip 之前,需先确认 Apache 的配置文件中有没有加载 mod_deflate 和 mod_headers 模块。
LAMP一键安装脚本的 Apache 配置文件路径是:/usr/local/apache/conf/httpd.conf

打开此文件查找如下两行代码:

LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so

前面没有#符号即为正常的,若是有#符号则表示被注释掉了,删除前面的#符号即可。

在 Apache 配置文件 /usr/local/apache/conf/httpd.conf 的最后添加:

<IfModule deflate_module>
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|doc|avi|mov|mp3|rm)$ no-gzip dont-vary
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

注解:
IfModule deflate_module 是判断如果 deflate_module 模块加载的话,执行里面的配置。
SetOutputFilter DEFLATE 是设置输出为 deflate 压缩算法。
SetEnvIfNoCase Request_URI 是排除一些常见的图片,影音,文档等类型的后缀,不压缩。
AddOutputFilterByType DEFLATE 是对常见的文本类型,如html,txt,xml,css,js做压缩处理。

保存以上修改好的配置文件,重启 Apache 即可。

service httpd restart

或者

/etc/init.d/httpd restart

转载请注明:秋水逸冰 » Apache如何开启Gzip压缩

发表评论
取消评论
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
表情

已有评论 (5)

  1. 重启apache后出现错误 AH00526: Syntax error on line 1 of /usr/local/apache/conf/httpd.conf: Invalid command '{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fcharset134', perhaps misspelled or defined by a module not included in the server configuration 查日志 [Tue Sep 20 12:20:29.015089 2016] [mpm_prefork:notice] [pid 3306] AH00173: SIGHUP received. Attempting to restart [Tue Sep 20 12:20:29.056814 2016] [ssl:warn] [pid 3306] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache] [Tue Sep 20 12:20:29.085101 2016] [mpm_prefork:notice] [pid 3306] AH00163: Apache/2.4.23 (Unix) OpenSSL/1.0.1e-fips configured -- resuming normal operations [Tue Sep 20 12:20:29.085126 2016] [core:notice] [pid 3306] AH00094: Command line: '/usr/local/apache/bin/httpd' 是不是我的云服务主机不支持啊?
    阿铁4个月前 (2016-09-20)回复
    • 你配置错误了,仔细排查一下吧。
      秋水逸冰4个月前 (2016-09-21)回复
      • 是我偷懒用SFTP编辑文件,应该是字符出错,已解决谢谢
        阿铁4个月前 (2016-09-23)回复
  2. AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/atom_xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-httpd-php AddOutputFilterByType DEFLATE image/svg+xml 这种也可以 DeflateCompressionLevel 9 SetOutputFilter DEFLATE SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:pdf|doc|avi|mov|mp3|rm)$ no-gzip dont-vary AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/atom_xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-httpd-php 我修改的,加了压缩级别
    hamen3年前 (2013-12-19)回复
    • DeflateCompressionLevel指令设置压缩程度,越高的压缩程度就会有越好的压缩效果,同时也意味着占用越多的CPU资源。取值范围在 1(最低压缩率) 到 9(最高压缩率)之间。
      秋水逸冰3年前 (2013-12-20)回复