gzip 是一种压缩工具, Web Server 透过 gzip 将数据压缩, 再发送给使用者的浏览器解压。这样所需传送的数据便会减少, 提升网站的速度。
以下是在 Nginx 开启 gzip 压缩的方法。
在开启 gzip 前, 可以先用 curl 检视一下目前 Nginx 是否有开启 gzip, 输入以下指令:
- $ curl -H “Accept-Encoding: gzip” -I http://localhost/test.html
以下是 CentOS 下用 yum 安装的 Nginx 的默认输出:
- $ curl -H “Accept-Encoding: gzip” -I http://localhost/test.html
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Tue, 26 Feb 2019 01:33:32 GMT
Content-Type: text/html
Content-Length: 3700
Last-Modified: Tue, 06 Mar 2018 09:26:21 GMT
Connection: keep-alive
ETag: “5a9e5ebd-e74”
Accept-Ranges: bytes
上面的输出并没有 gzip, 代表并没有开启 gzip, 虽然 Ubuntu 下默认会开启 gzip, 但只设定 gzip on, 只会对 HTML 档压缩, 其他类型的档案 (例如 css 或 js 档) 不会压缩.
在 CentOS 下建立 gzip 的设定档:
- $ sudo vi /etc/nginx/conf.d/gzip.conf
加入以下内容:
|
1 2 3 4 5 6 7 8 9 |
gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_http_version 1.1; gzip_min_length 256; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon; |
如果是用 Ubuntu, 开启 Nginx 的设定档:
- $ sudo vi /etc/nginx/nginx.conf
找到以下 gzip 的设定
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
## # `gzip` Settings # # gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; |
可以看到几个 gzip 的设定也被注释掉, 将这样 gzip 设定前的 “#” 删除, 改成这样:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
## # `gzip` Settings # # gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_min_length 256; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon; |
储存设定后重新启动 Nginx:
- $ sudo systemctl restart nginx
现在可以再用 curl 测试, 可以一拼测试 css 及 js 档:
-
$ curl -H “Accept-Encoding: gzip” -I http://localhost/test.html
$ curl -H “Accept-Encoding: gzip” -I http://localhost/test.css
$ curl -H “Accept-Encoding: gzip” -I http://localhost/test.js
现在 curl 的输出最后一行, 会看到 “Content-Encoding: gzip”, 那便表示 gzip 已经开。