Nginx Gzip圧縮設定

NginxでGzip圧縮を有効にし、HTTPレスポンスサイズを最大70%削減する設定方法を解説。MIMEタイプ、圧縮レベル、最適化のヒントを網羅しています。

Performance

詳細な説明

Gzip圧縮はHTTPレスポンスをクライアントに送信する前にサイズを縮小し、ページ読み込みの高速化と帯域幅消費の大幅な削減を実現します。

基本的なGzip設定

http ブロックでGzipを有効にし、圧縮するMIMEタイプを指定します。HTML、CSS、JavaScript、JSONなどのテキストベースの形式は繰り返しパターンが多いため、圧縮の効果が最も高くなります。

http {
    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 5;
    gzip_min_length 256;
    gzip_types
        text/plain
        text/css
        text/javascript
        application/javascript
        application/json
        application/xml
        image/svg+xml
        font/woff2;
}

圧縮レベル

gzip_comp_level は1(最速・最低圧縮)から9(最遅・最高圧縮)まで設定できます。レベル5はほとんどのワークロードでCPU使用量と圧縮率の優れたバランスを提供します。レベル6を超えるとファイルサイズの削減効果は逓減する一方、CPU消費が大幅に増加します。

gzip_vary ディレクティブ

gzip_vary on を設定すると、Vary: Accept-Encoding レスポンスヘッダーが追加され、キャッシュプロキシやCDNに圧縮版と非圧縮版の両方を保存するよう指示します。

最小長さ

gzip_min_length ディレクティブは指定バイト数より小さいレスポンスの圧縮をスキップします。非常に小さなレスポンスは圧縮の恩恵が少なく、Gzipのオーバーヘッドにより逆に大きくなることがあります。256バイトの閾値が多くのアプリケーションに適しています。

静的Gzipファイル

最大のパフォーマンスを得るには、ビルドプロセスで静的ファイルを事前圧縮し、gzip_static on を使用します。Nginxは元のファイルの横に .gz ファイルが存在すれば自動的にそれを配信し、実行時の圧縮オーバーヘッドを完全に回避します。

location /static/ {
    gzip_static on;
    expires max;
}

圧縮すべきでないもの

JPEG、PNG、GIF、WOFF、ZIPなど、既に圧縮済みのバイナリ形式の圧縮は避けてください。CPUサイクルを無駄に消費し、意味のあるサイズ削減にはなりません。

圧縮の検証

curl -H "Accept-Encoding: gzip" -I https://example.com で設定をテストし、レスポンスに Content-Encoding: gzip ヘッダーが含まれることを確認してください。

ユースケース

HTML、CSS、JavaScriptなどのテキストベースアセットを圧縮して配信し、Webサイトの表示速度を向上させ、帯域幅コストを削減します。

Try It — Nginx Config Generator

フルツールを開く