Nginx 開啟 gzip 壓縮設定


gzip 是一種壓縮工具, Web Server 透過 gzip 將數據壓縮, 再發送給使用者的瀏覽器解壓。這樣所需傳送的數據便會減少, 提昇網站的速度。

以下是在 Nginx 開啟 gzip 壓縮的方法。

在開啟 gzip 前, 可以先用 curl 檢視一下目前 Nginx 是否有開啟 gzip, 輸入以下指令:

/linux/curl

  • $ curl -H “Accept-Encoding: gzip” -I http://localhost/test.html

以下是 CentOS 下用 yum 安裝的 Nginx 的預設輸出:

/linux/curl

  • $ 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 的設定檔:

/linux/nginx-config

  • $ sudo vi /etc/nginx/conf.d/gzip.conf

加入以下內容:

如果是用 Ubuntu, 開啟 Nginx 的設定檔:

/linux/nginx-config

  • $ sudo vi /etc/nginx/nginx.conf

找到以下 gzip 的設定

可以看到幾個 gzip 的設定也被註釋掉, 將這樣 gzip 設定前的 “#” 刪除, 改成這樣:

儲存設定後重新啟動 Nginx:

/linux/restart-nginx

  • $ sudo systemctl restart nginx

現在可以再用 curl 測試, 可以一拼測試 css 及 js 檔:

/linux/curl

  • $ 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 已經開。

Leave a Reply