菜鸟笔记
提升您的技术认知

nginx 配置压缩

gzip

gzip是一种广泛使用的数据压缩算法。当客户端向 Nginx 服务器请求资源时,若客户端支持gzip压缩(通过Accept-Encoding请求头表明),Nginx 会对响应内容进行gzip压缩,然后将压缩后的数据发送给客户端。客户端接收到数据后,再进行解压缩。

优点:
兼容性好,几乎所有现代浏览器都支持gzip压缩。
配置简单,Nginx 默认支持gzip模块,无需额外编译。
缺点:
压缩比相对 Brotli 较低,在某些情况下,数据压缩后的大小不如 Brotli。

http {
    # 开启gzip压缩
    gzip on;
    # 最小压缩文件大小,小于该值的文件不进行压缩
    gzip_min_length 1k;
    # 压缩级别,取值1 - 9,值越大压缩比越高,但CPU消耗也越大,一般设置为6
    gzip_comp_level 6;
    # 允许压缩的文件类型
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    # 为老的代理服务器添加Vary头
    gzip_vary on;
    # 禁用对IE 6以下版本的压缩
    gzip_disable "msie6";

    server {
        listen 80;
        server_name example.com;

        location / {
            root /var/www/html;
        }
    }
}  

nginx gzip

brotli

Brotli 是 Google 开发的一种新的压缩算法,它基于 LZ77 算法的现代变体、霍夫曼编码和二阶上下文建模。与gzip相比,Brotli 通常能提供更高的压缩比,从而进一步减少数据传输大小。

优点:
压缩比高,能显著减少数据传输大小,加快页面加载速度。
对于文本类文件(如 HTML、CSS、JavaScript)的压缩效果尤其明显。
缺点:
兼容性不如gzip,虽然大多数现代浏览器都支持 Brotli,但仍有一小部分旧浏览器不支持。
需要额外安装ngx_brotli模块,配置相对复杂。
要在 Nginx 中使用 Brotli 压缩,需要安装ngx_brotli模块

http {
    # 开启Brotli压缩
    brotli on;
    # 压缩级别,取值0 - 11,值越大压缩比越高,但CPU消耗也越大,一般设置为6
    brotli_comp_level 6;
    # 允许压缩的文件类型
    brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    server {
        listen 80;
        server_name example.com;

        location / {
            root /var/www/html;
        }
    }
}