Nginx的Gzip压缩

本文详细介绍了Nginx的Gzip压缩功能,包括配置指令说明和实际使用效果。通过开启Gzip压缩,可以显著减小css、js等文件的传输体积,提升网站访问速度。文中讨论了gzip指令、gzip_buffers、gzip_comp_level等多个关键配置选项,并通过实测对比展示开启Gzip压缩后性能的提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx的Gzip压缩

    

Nginx开启Gzip压缩功能, 可以使网站的css、js 、xml、html 文件在传输时进行压缩,提高访问速度, 进而优化Nginx性能!在Nginx配置文件中可以配置Gzip的使用,相关指令可以在http区域
server区域、location区域配置。Nginx可以通过ngx_http_gzip_module模块、ngx_http_gzip_static_module模块和ngx_http_gunzip_module模块对这些指令进行解析和处理。

    
本章主要包括的内容有:

  • Gzip压缩配置指令说明
  • Gzip压缩功能使用
  • Gzip压缩常见问题解决

1、Gzip压缩配置指令说明

  • ngx_http_gzip_module模块指令说明

gzip指令 该指令用于开启关闭Gzip压缩功能, 默认为关闭状态。只有配置了on,gzip功能才有效

gzip <<on | off>>

for example: gzip on

gzip buffers指令 该指令用于设置文件使用的缓存空间大小,number为指定Nginx服务器要向服务器申请的缓存空间的个数,size 每个缓存的空间大小,从0.7版本之后默认情况下size*number的值为128,其中size去系统内存页的大小

gzip buffers <<number>> <<size>>

for example: gzip buffers 32 4k; 

gzip_comp_level指令该指令设定文件压缩等级,包括1~9级,数值越小压缩程度越低。效率最高。花费的时间越少

gzip_comp_level <<level>>

for example: gzip_comp_level 1;

gzip_disable 支持针对不同匹配条件选择项关闭压缩功能,其中regex根据浏览器标志进行设置,支持使用正则表达式

gzip_disable <<regex...>>

for example: gzip_disable MISE [4-6]\.;

gzip_http_version 支持针对不同的http版本设置。早期的浏览器或者http不支持Gzip压缩功能,可能会出现乱码等现象。截止目前大多数客户端都支持Gzip压缩功能,因此选择默认即可

gzip_http_version <<version>>

for example: gzip_http_version  1.0|1.1;

gzip_min_length 指定请求的数据超过某个阈值后才开启Gzip压缩功能,压缩很小的珊瑚橘反而会把数据变大,从而影响性能

gzip_min_length <<size>>

for example: gzip_min_length  1024;

gzip_types 指定压缩的文件类型,一般指定常规文件类型即可。

gzip_types <<types...>>

for example: gzip_types  text/plain;

gzip_vary 设置为开启,服务器返回数据时会在头部带上"Vary:Accept-Encoding"的标识。客户端便可以知道获取到的数据是否已经被压缩,默认为关闭

gzip_vary  <<on | off>>

for example: gzip_vary on;

2、Gzip压缩功能使用

    
前面已经基本将Gzip压缩功能涉及配置指令罗列完毕,接下来针对请求相同的资源文件,比较在开启和关闭Gzip压缩功能两种情况下,数据请求的效率以及花费的时间。

  • 关闭Gzip压缩功能服务器配置文件内容:
worker_processes 1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /data/software/nginx/html/dist;
            index  index.html index.htm;
        }
    }
}

在谷歌浏览器请求所有资源返回的截图:

 

  • 开启Gzip压缩功能服务器配置文件内容:
worker_processes 1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;
    sendfile        on;
    keepalive_timeout  65;


    #开启gzip压缩功能
    gzip on;
    gzip_min_length 1024;
    gzip_buffers 4 16k;
    gzip_comp_level 2;
    gzip_types *;
    gzip_vary on;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /data/software/nginx/html/dist;
            index  index.html index.htm;
        }
    }
}

在谷歌浏览器请求所有资源返回的截图:

 

对比红线线圈中的文件,花费的时间基本减少一半以上。综合来讲,对于大文件来讲,开启Gzip压缩功能确实大大提高了服务器的性能,可以有更好的用户体验。本次测试只是将该功能设置在http区域块,当然还可以设置在server区域、location区域。更多的测试这里不再一一列举。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值