nginx—brotli—gzip—配置

816 阅读3分钟

brotli配置

brotli

语法:brotli on | off
默认值:off
作用域:http、server、location、if
说明:是否启用brotli压缩

brotli_buffers

语法:brotli_buffers number size
默认值:brotli_buffers 32 4k | 16 8k
作用域:http、server、location
说明:设置系统获取几个单位的缓存用于存储brotli的压缩结果数据流;
例如 32 4k代表以4k为单位,按照原始数据大小以4k为单位的32倍申请内存。

brotli_comp_level

语法:brotli_comp_level 0..11
默认值:brotli_comp_level 6
作用域:http、server、location
说明:brotli_comp_level压缩比,0压缩比最小处理速度最快,11压缩比最大但处理最慢;数字越大压缩比越好,也越消耗CPU

brotli_min_length 

语法:brotli_min_length length
默认值:gzip_min_length 20
作用域:http、server、location
说明:设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。

brotli_window 

语法:brotli_window  size
默认值:brotli_window 512k
作用域:http、server、location
说明:brotli使用的窗口值。

brotli_types

语法:brotli_types mime-type
默认值:gzip_types test/html
作用域:http、server、location
说明:匹配MIME类型进行压缩,(无论是否指定)"text/html"类型总是会被压缩的。

配置案例

# btotli
brotli on;
brotli_comp_level 3;
brotli_buffers 16 8k;
brotli_types text/plain application/x-javascript application/json text/css application/xml;

gzip配置

gzip

语法:gzip on | off
默认值:gzip off
作用域:http、server、location、if
说明:开启或关闭gzip模块

gzip_buffers

语法:gzip_buffers number size
默认值:gzip_buffers 4 4k
作用域:http、server、location
说明:设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流;
例如 4 4k 代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存;
如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。

gzip_comp_level

语法:gzip_comp_level 1..9
默认值:gzip_comp_level 1
作用域:http、server、location
说明:gzip压缩比,1 压缩比最小处理速度最快,9 压缩比最大但处理最慢;数字越大压缩比越好,也越消耗CPU

gzip_min_length 

语法:gzip_min_length length
默认值:gzip_min_length 0
作用域:http、server、location
说明:设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取;
默认值是0,不管页面多大都压缩。
建议设置成大于1k的字节数,小于1k可能会越压越大。 即: gzip_min_length 1024

gzip_http_version

语法:gzip_http_version 1.0 \ 1.1
默认值:gzip_http_version 1.1
作用域:http、server、location
说明:识别http的协议版本;由于早期的一些浏览器或者http客户端,可能不支持gzip自解压,用户就会看到乱码,所以做一些判断还是有必要的。 

gzip_types

语法:gzip_types mime-type
默认值:gzip_types test/html
作用域:http、server、location
说明:匹配MIME类型进行压缩,(无论是否指定)"text/html"类型总是会被压缩的。

案例

# gzip
gzip  on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_http_version 1.0;
gzip_comp_level 3;
gzip_proxied    any;
gzip_types       text/plain application/x-javascript application/json text/css application/xml;
gzip_vary on;

完整配置

server {
    listen       80;
    server_name  XXXX;

    # btotli
    brotli on;
    brotli_comp_level 6;
    brotli_buffers 16 8k;
    brotli_types text/plain application/x-javascript application/json text/css application/xml;


    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 32k;
    gzip_http_version 1.1;
    gzip_comp_level 3;
    gzip_types text/plain application/x-javascript application/json text/css application/xml;
    gzip_vary on;
    gzip_disable "MSIE [1-6].";

    #charset utf-8;

    #root /data/www;

    location / {
        include vhosts/common.conf;
    }


    # 异常处理
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /data/www/html;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
    }
}

参考

Nginx 为站点启用 Brotli 压缩算法
HttpGzip模块