X
返回

Nginx开启Gzip

文章信息:
  • 分类:服务器部署
  • 阅读量:2801
  • 创建时间:2022-11-19
  • 更新时间:2年前

Nginx开启Gzip会在文件传输时对html、js、css等文件进行压缩,这种方式能够在文件传输时减少服务器带宽、提高文件传输速度在前端项目中达到性能优化的效果

注意:如果你使用的是Ubuntu apt安装的Nginx,那么你需要通过编译安装Nginx的方式替换apt安装的Nginx。因为apt安装的Nginx无法自定编译安装模块

检查是否安装

# 注意这里的V要大写,小写的V显示的是版本号
nginx -V

运行后会看到以下内容

nginx version: nginx/1.23.2
built by gcc 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
built with OpenSSL 1.1.1  11 Sep 2018
TLS SNI support enabled
configure arguments:
 --with-debug
 --with-compat
 --with-pcre-jit
 --with-http_ssl_module
 --with-http_stub_status_module
 --with-http_realip_module
 --with-http_auth_request_module
 --with-http_v2_module
 --with-http_dav_module
 --with-http_slice_module
 --with-threads
 --with-http_addition_module
 --with-http_gunzip_module
 --with-http_gzip_static_module
 --with-http_image_filter_module=dynamic
 --with-http_sub_module
 --with-http_xslt_module=dynamic
 --with-stream=dynamic
 --with-stream_ssl_module
 --with-mail=dynamic
 --with-mail_ssl_module

查看里面是否存在http_gzip_static_module模块

Ubuntu apt安装的Nginx一般都内置了http_gzip_static_module模块,检查为了确保存在此模块

安装http_gzip_static_module模块(如果已经存在忽略此步骤)

进入Nginx目录:

cd /usr/local/src/nginx-1.**.**

添加模块:

# 这里的 configure arguments 是上面运行的Nginx -V获取到的configure arguments: 后面的内容
./configure [configure arguments] --with-http_gzip_static_module

编译安装:

make install

检查安装:

nginx -V

Nginx.conf 添加配置

修改Nginx.conf 文件:

vi /usr/local/nginx/conf/nginx.conf

在http中添加配置:

http {
    # 开启动态压缩
    gzip on;
    # 打开静态压缩:如果有相同文件名的.gz文件则会发送该文件,不进行压缩,无则进行动态压缩。(需要前端打包压缩相关文件)
    gzip_static on;
    # 允许压缩的最小大小
    gzip_min_length 1000;
    # 代理启动压缩
    gzip_proxied no-cache no-store private expired auth;
    # gzip压缩级别:级别从1-9,级别越高,压缩就越小,节省了带宽资源,但同时也消耗CPU资源
    gzip_comp_level 6
    # 压缩的文件类型
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml;
    # 是否在响应头携带Vary:Accept-Encoding:作用是告知接收方此文件已经被Gzip压缩处理
    gzip_vary on;
    # 过滤浏览器:在指定的浏览器中不使用Gzip (过滤IE6)
    gzip_disable "MSIE [1-6]\.";
}

检查Nginx.conf配置:

nginx -t

重启Nginx服务:

nginx -s reload

验证是否开启Gzip

使用命令查看或者在浏览器用Network查看

运行命令:

curl -H 'Accept-Encoding: gzip' -I http://localhost
HTTP/1.1 200 OK
Server: nginx/1.23.2
Date: Fri, 18 Nov 2022 17:53:48 GMT
Content-Type: text/html
Last-Modified: Wed, 16 Nov 2022 16:30:56 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: W/"63751040-124b"
Content-Encoding: gzip

Content-Encoding:gzip 证明内容正确的被gzip压缩
ETag:W/"63751040-124b" 前面的W代表是服务端压缩,没有就是前端打包压缩

评论/留言