Nginx配置gzip压缩,提升网站加载速度

前言

网站打开慢?Nginx 开个 gzip 压缩,能把传输体积压缩 70% 以上,用户打开快很多,还省带宽。对 SEO 也有帮助。

什么是 gzip 压缩

gzip 是一种压缩算法。Nginx 把 HTML、CSS、JS 等文本文件压缩后再发给浏览器,浏览器收到后自动解压。

比如一个 100KB 的 CSS 文件,压缩后可能只有 20KB。

配置方法

在 Nginx 配置文件里加 gzip 相关配置。

基础配置

gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;

完整示例

server {
    listen       80;
    server_name  www.example.com;

    root  /var/www/html;
    index index.html;

    # gzip 压缩
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_vary on;
}

参数说明

参数 说明
gzip on 开启 gzip
gzip_min_length 1k 小于 1KB 的文件不压缩
gzip_comp_level 6 压缩级别 1-9,6 最合适
gzip_types 压缩哪些类型的文件
gzip_vary on 给响应头加 Vary: Accept-Encoding

测试是否生效

方法一:浏览器 F12

打开浏览器开发者工具 → Network → 点一个 CSS/JS 文件 → 看 Response Headers 里有没有:

Content-Encoding: gzip

有就说明生效了。

方法二:curl 命令

curl -I -H "Accept-Encoding: gzip" https://www.example.com/style.css

看返回头里有没有 Content-Encoding: gzip。

常见坑

坑1:图片也压缩

配置里把图片类型也加上了。

问题: 图片(jpg/png)本身已经是压缩过的格式,再 gzip 没意义,还浪费 CPU。

解决: 只压缩文本文件,图片不用压。

坑2:压缩级别太高

设成了 9,以为压缩越狠越好。

问题: 级别太高会占用更多 CPU,压缩时间长,反而拖慢响应。

解决: 用 6 就够了,性价比最高。

坑3:PHP 页面没压缩

HTML 压缩了,但 PHP 输出的页面没压缩。

原因: PHP 页面已经被 PHP-FPM 压缩过了,Nginx 不会再压。

解决: 不用管,PHP 那边自己处理就行。

坑4:CDN 后面 gzip 不生效

用了 CDN,回源开了 gzip,但用户那边没压。

原因: CDN 回源拿的是压缩后的文件,CDN 缓存了。

解决: 刷新 CDN 缓存,或者 CDN 那边也开 gzip。

总结

开 gzip 就这几行配置:

gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript;
gzip_vary on;

记住: 文本文件压,图片别压;压缩级别用 6 就行。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-7 07:37 

Linux 压缩命令大全

Linux 常用压缩命令大全

Linux 下压缩解压命令很多,记不住每次都要搜,整理一份常用清单。

1. tar 命令(最常用)

tar 是 Linux 最常用的打包工具,可以配合不同压缩格式。

打包不压缩:

# 打包
tar -cvf blog.tar /www/wwwroot/blog/

# 解包
tar -xvf blog.tar

参数说明:

  • -c:创建打包文件
  • -x:解包
  • -v:显示过程
  • -f:指定文件名

2. tar.gz 格式(最常用)

# 压缩
tar -zcvf blog.tar.gz /www/wwwroot/blog/

# 解压
tar -zxvf blog.tar.gz

# 解压到指定目录
tar -zxvf blog.tar.gz -C /data/backup/

-z 就是用 gzip 压缩,这是最常用的格式。

3. tar.bz2 格式(压缩率更高)

# 压缩(体积更小,但更慢)
tar -jcvf blog.tar.bz2 /www/wwwroot/blog/

# 解压
tar -jxvf blog.tar.bz2

4. zip 格式

# 压缩
zip -r blog.zip /www/wwwroot/blog/

# 解压
unzip blog.zip

# 解压到指定目录
unzip blog.zip -d /data/backup/

Windows 用户常用 zip 格式,跨平台方便。

5. gz 格式

# 压缩(单个文件)
gzip file.log

# 解压
gunzip file.log.gz

gzip 只能压单个文件,一般和 tar 配合用。

6. 查看压缩包内容

# 查看 tar 包内容
tar -tvf blog.tar

# 查看 tar.gz 包内容
tar -ztvf blog.tar.gz

# 查看 zip 包内容
unzip -l blog.zip

7. 常用场景示例

备份网站文件:

tar -zcvf backup_$(date +%Y%m%d).tar.gz /www/wwwroot/blog/

备份数据库:

mysqldump -u root -p123456 blog | gzip > db_$(date +%Y%m%d).sql.gz

传输文件压缩:

tar -zcvf - /www/wwwroot/blog/ | ssh root@192.168.1.100 "tar -zxvf - -C /backup/"

8. 总结

格式 压缩率 速度 命令
tar.gz 中 快 tar -z
tar.bz2 高 慢 tar -j
zip 中 中 zip/unzip
tar 无 最快 tar

日常用 tar.gz 就够了,跨平台用 zip,追求小体积用 bz2。


emer 发布于  2026-10-6 07:40