linux中apache开启gzip压缩的核心是启用mod_deflate模块并配置压缩规则:先通过apachectl -m检查模块是否加载,未启用则取消httpd.conf中loadmodule deflate_module和headers_module的注释;再在块中设置setoutputfilter deflate、addoutputfilterbytype指定压缩类型、deflatecompressionlevel设为6、并用setenvifnocase排除图片等已压缩文件;最后重启服务并用content-encoding: gzip响应头或在线工具验证。

Linux 中配置 Apache 开启 Gzip 压缩,核心是启用 mod_deflate 模块并正确设置压缩规则。整个过程不复杂,但有几个关键点必须确认和配置到位。
确认 mod_deflate 模块已加载
Apache 2.2+ 默认内置该模块,但可能未启用。运行以下命令检查:
-
sudo apachectl -M | grep deflate(或httpd -M | grep deflate) - 若输出含
deflate_module (shared),说明已加载;否则需启用 - 编辑
/etc/httpd/conf/httpd.conf(CentOS/RHEL)或/etc/apache2/apache2.conf(Debian/Ubuntu),取消以下行的注释:
LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so
注意:mod_headers 非必需,但搭配 Vary 头可提升代理/CDN 兼容性,建议一并开启。
添加 Gzip 压缩配置
在主配置文件末尾或虚拟主机配置中加入以下内容(推荐放在 <ifmodule mod_deflate.c></ifmodule> 块内):
<ifmodule mod_deflate.c>
# 启用输出过滤器
SetOutputFilter DEFLATE
<pre class="brush:php;toolbar:false;"># 按 MIME 类型指定压缩内容
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript application/javascript application/json application/rss+xml
# 可选:按文件后缀压缩(兼容旧写法)
AddOutputFilter DEFLATE html css js xml rss
# 设置压缩级别(1~9,6 是平衡推荐值)
DeflateCompressionLevel 6
# 排除不压缩的资源(如图片、字体、压缩包等)
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|bmp|tiff|ico|woff2?|eot|ttf|svgz|pdf|zip|rar|7z|exe)$ no-gzip dont-vary
⚠️ 注意:不要对已压缩格式(如 JPG、PNG、MP4)再启用 Gzip,徒增 CPU 开销且无收益。
验证是否生效
重启服务后测试:
- 重启 Apache:
sudo systemctl restart httpd(RHEL/CentOS)或sudo systemctl restart apache2(Debian/Ubuntu) - 用浏览器开发者工具 → Network 标签页,刷新页面,点击任意 HTML/JS/CSS 请求,查看响应头是否有
Content-Encoding: gzip - 或使用在线工具检测,如 GiftOfSpeed Gzip Test 或 Check GZIP Compression
补充说明:动态内容与 PHP 场景
对于 PHP 输出(如 WordPress 页面),只要 Apache 的 mod_deflate 已启用且未被 PHP 的 zlib.output_compression 冲突,就能自动压缩响应体。无需额外插件,除非你的主机禁用了 mod_deflate 且只允许 PHP 层压缩(此时可用 ob_start('ob_gzhandler'))。










