前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx服务器的压缩功能

Nginx服务器的压缩功能

作者头像
BUG弄潮儿
发布2020-06-15 16:35:54
1.6K0
发布2020-06-15 16:35:54
举报
文章被收录于专栏:JAVA乐园JAVA乐园

在Nginx服务器配置文件中可以通过配置Gzip的使用,可以配置在http块,server 块或者location块中设置,Nginx服务器可以通过ngx_http_gzip_module模块、ngx_http_static_module 模块功能ngx_http_gunzip_module模块对这些指令进行分析和处理。今天看看ngx_http_gzip_module模块的使用

0x01:ngx_http_gzip_module模块处理的指令

1、gzip:

用于打开或者关闭gzip压缩的功能,用法如下:

代码语言:javascript
复制
gzip on  | off ; #默认为off

2、gzip_buffers:

用于指定gzip功能压缩文件时使用的缓存空间的大小,语法结构为:

代码语言:javascript
复制
gzip_buffers numner | size ;
number #指定Nginx服务器需要向服务器申请的缓存空间的个数
size #指定每个缓存空间的大小,从Nginx 0.7.8开始,默认number * siez的的值为128,其中size取系统中内存页一页的大小,为4k或者8k等
gzip_buffers 32 4k | 12 8k;

3、gzip_comp_level

 指定gzip压缩级别,级别为1-9,默认为1,级别越高压缩率越高即压缩后的文件越小,但是越占用CPU,压缩率越小压缩后的文件越大,但是节约CPU。

代码语言:javascript
复制
gzip_comp_level  4;  #推荐先设置为中间的值,比如4或者5

4、gzip_disbale

针对不同客户端发起的请求进行有选择的打开或关闭gzip命令,后面跟浏览器的名称,用法如下:

代码语言:javascript
复制
gzip_disable MSIE[1-6]\.   #使用正则表达式可以匹配UC字符串中MSIE 1-6 的浏览器,这三个浏览器在发起请求后Nginx将不进行数据包的压缩。

5、gzip_http_verson

早期的一些浏览器或者http客户端可能不支持gzip压缩,因此有客户有时候会看到乱码,那是应为客户端无法进行解压,因此可以根据不同的http协议版本进行选择性的打开或关闭gzip功能,用法如下:

代码语言:javascript
复制
gzip_http_version 1.0 | 1.1; #对使用htto协议1.0和1.1的请求进行压缩

6、gzip_min_length

设置最少压缩的数据包大小,小于此值的数据包将不被压缩,因为大量的小的数据压缩后没有明显的效果还占用了CPU的资源,因此可以设置最少多大的数据才进行压缩,用法如下:

代码语言:javascript
复制
gzip_min_length 1024;  #默认为20,建议设置为1KB,如果设置为0则表示压缩全部数据包

7、gzip_proxine

在Nginx 服务器作为反向代理的时候有效,用于设置nginx 服务器是否对后端返回的结果进行gzip压缩,用法如下:

代码语言:javascript
复制
gzip_proxied off | any; #off为关闭,any为压缩所有后端服务器返回的数据。

8、gzip_types

设置Nginx服务器可以根据响应页面的类型进行选择性的打开或关闭gzip功能,用法如下:

代码语言:javascript
复制
gzip_types       text/plain application/x-javascript text/css application/xml;   #一般情况下如此设置

9、gzip_vary

用于设置是否在使用gzip功能时发送带有"vary:Accept-Encoding" 头域的响应头部,该头域的主要功能是要告诉客户端数据已经在服务器进行了压缩,默认设置为off,用法如下:

代码语言:javascript
复制
gzip_vary on| off;  #默认为off
还可以使用Nginx 配置的add_header指令强制在Nginx服务器的响应头部添加“Vary:Accept-Encoding”也可以实现相同的效果。

0x02:ngx_http_gzip_module模块使用案例

1、先不开启压缩

代码语言:javascript
复制
#vim /usr/local/nginx/conf.d/vir.conf
server {
        listen 80;
        server_name test.com www.test.com;
        root /webroot/www;
        location ~ .*\.(jpg|gif|png|bmp)$ {
#gzip on;
#gzip_http_version 1.1;
#gzip_comp_level 3;
#gzip_types text/plain application/json application/x-javascript application/css application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png image/x-ms-bmp;
}
}
#nginx -t
#nginx -s reload

2、文件大小

ll -h /webroot/www/test.bmp -rw-r--r-- 1 root root 453K 3月 14 18:43 /webroot/www/test.bm

3、验证:文件没有被压缩,文件传输大小还是400多K

4、开启压缩

代码语言:javascript
复制
#vim /usr/local/nginx/conf.d/vir.conf
server {
        listen 80;
        server_name test.com www.test.com;
        root /webroot/www;
        location ~ .*\.(jpg|gif|png|bmp)$ {
                gzip on;
                gzip_http_version 1.1;
                gzip_comp_level 3;
                gzip_types text/plain application/json application/x-javascript application/css application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png image/x-ms-bmp;
}
}
#nginx -t
#nginx -s reload

5、验证:文件传输大小只有200多K

参考:https://www.cnblogs.com/zhang-shijie/p/5451919.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BUG弄潮儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档