Nginx gzip設定について

Nginx gzip設定について

nginx がリソース圧縮を実現する原理は、ngx_http_gzip_module モジュールを介してリクエストをインターセプトし、gzip が必要なタイプに対して gzip 圧縮を実行することです。このモジュールはデフォルトの基本モジュールであり、再コンパイルする必要はありません。直接有効にすることができます。

基本設定

# gzip を有効にするgzip on;
 
# gzip 圧縮の最小ファイル サイズを有効にします。設定された値より小さいファイルは圧縮されません。gzip_min_length 1k;
 
# gzip 圧縮レベル、1 ~ 9、数字が大きいほど圧縮率は高くなりますが、CPU 時間も長くなります。詳細な説明は後で説明します。gzip_comp_level 1;
 
# 圧縮するファイルの種類。 JavaScript にはさまざまな形式があります。値は mime.types ファイルにあります。 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;
 
# http ヘッダーに Vary: Accept-Encoding を追加するかどうか。gzip_vary をオンにすることをお勧めします。
 
# IE 6 を無効にする gzipgzip_disable "MSIE [1-6]\\.";
 
# 圧縮に必要なバッファサイズを設定します gzip_buffers 32 4k;
 
# gzip 圧縮の HTTP プロトコル バージョンを設定します。負荷がない場合は無視できます。# gzip_http_version 1.0;# キャッシュの場所を有効にする ~* ^.+\\.(ico|gif|jpg|jpeg|png)$ {
  access_log オフ;
  有効期限は2日です。
}
 
場所 ~* ^.+\\.(css|js|txt|xml|swf|wav)$ {
  access_log オフ;
  24時間で期限切れになります。
}
 
場所 ~* ^.+\\.(html|htm)$ {
  1時間で期限切れになります。
}
 
場所 ~* ^.+\\.(eot|ttf|otf|woff|svg)$ {
  access_log オフ;
  有効期限が最大になります。
}
 
# フォーマット # 30 秒で期限切れ; # 30 分で期限切れ; # 2 時間で期限切れ; # 30 日で期限切れ;

検出効果

1. nginxのレスポンスヘッダーのContent-Encodingはgzipです

2. 返されるファイルサイズは明らかに圧縮されている

圧縮手順 gzip オン

gzip をデフォルトでオンまたはオフにします。コード ブロック http、サーバー、場所 (場所内にある場合) を閉じます。

gzip_バッファ

リクエストの圧縮を処理するために使用されるバッファの数とサイズを設定します。たとえば、32 4K は、1 つのメモリ ページのサイズを 4K 単位で基準にして、メモリ空間の 32 倍を適用することを意味します (つまり、システム内のメモリ ページは 4K です)。このオプションを設定せず、デフォルト値を使用することをお勧めします。

構文: gzip_buffers 数値 サイズ;
デフォルト:
gzip_バッファ 32 4k|16 8k;
コンテキスト: http、サーバー、場所

gzip_comp_level

gzip 圧縮レベルを設定します。レベルが低いほど、圧縮速度が速くなり、ファイル圧縮率は小さくなります。逆に、速度が遅いほど、ファイル圧縮率は大きくなります。

構文: gzip_comp_level レベル;デフォルト:
gzip_comp_level 1;コンテキスト: http、サーバー、場所

圧縮レベルが高ければ高いほど良いというわけではありません。実際には gzip_comp_level 1 の圧縮能力で十分です。レベルが高くなるほど圧縮率の増加は小さくなります。むしろ処理性能は大幅に低下します。
一方、圧縮バージョンをキャッシュするには、圧縮を静的リソース キャッシュと組み合わせる必要があります。そうしないと、毎回圧縮を実行すると、サーバーが高負荷を処理できなくなります。

gzip_disable

式を使用して、どの UA ヘッダーを gzip で圧縮しないかを示します。

構文: gzip_disable regex ...;
デフォルト: -
コンテキスト: http、server、locationこのディレクティブはバージョン 0.6.23 で登場しました。

gzip_最小長さ

Gzip 圧縮は、返されるコンテンツがこの値 (K 単位) より大きい場合にのみ使用されます。値が 0 の場合、すべてのページが圧縮されます。

構文: gzip_min_length 長さ;デフォルト:
gzip_min_length 20;コンテキスト: http、サーバー、場所

gzip_http_バージョン

http プロトコルのバージョンを識別するために使用されます。初期のブラウザは gzip 圧縮をサポートしていないため、ユーザーには文字化けした文字が表示されます。そのため、このオプションは初期のバージョンをサポートするために追加されています。デフォルトでは、http/1.0 プロトコルでは gzip 圧縮は有効になっていません。

構文: gzip_http_version 1.0 | 1.1;
デフォルト:
gzip_http_バージョン1.1;
コンテキスト: http、サーバー、場所

アプリケーション サーバーの前に負荷分散レイヤーとして別の Nginx クラスターがある場合、このレイヤーでは gzip は有効になりません。
リバース プロキシに proxy_pass を使用する場合、nginx とバックエンドのアップストリーム サーバー間の通信には、デフォルトで HTTP/1.0 プロトコルが使用されます。
キャッシュ サーバーも nginx であり、フロントエンドの nginx で gzip が有効になっていない場合。
同時に、バックエンド nginx で gzip_http_version が 1.0 に設定されていない場合、キャッシュされた URL は gzip 圧縮されません。

gzip_プロキシ

Nginx をリバース プロキシとして使用する場合は、以下を有効にします。

1.off – すべてのプロキシ結果データの圧縮をオフにします 2. expired – ヘッダーに「Expires」ヘッダーが含まれている場合に圧縮を有効にします 3.no-cache – ヘッダーに「Cache-Control: no-cache」ヘッダーが含まれている場合に圧縮を有効にします 4.no-store – ヘッダーに「Cache-Control: no-store」ヘッダーが含まれている場合に圧縮を有効にします 5. private – ヘッダーに「Cache-Control: private」ヘッダーが含まれている場合に圧縮を有効にします 6. no_last_modified – ヘッダーに「Last_Modified」ヘッダーが含まれている場合に圧縮を有効にします 7. no_etag – ヘッダーに「ETag」ヘッダーが含まれている場合に圧縮を有効にします 8. auth – ヘッダーに「Authorization」ヘッダーが含まれている場合に圧縮を有効にします 9.any – すべての結果データを無条件に圧縮します
構文: gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;
デフォルト:
gzip_proxied オフ;
コンテキスト: http、サーバー、場所

gzip_types

圧縮する必要がある MIME タイプを設定します。設定されたタイプの範囲外のリクエストは圧縮されません。

構文: gzip_types mime-type ...;
デフォルト:
gzip_typesテキスト/html;
コンテキスト: http、サーバー、場所

gzip_vary

応答ヘッダー「Vary: Accept-Encoding」を追加すると、送信されたデータが圧縮されていることを受信者に通知します。これをオンにすると、応答ヘッダーに Accept-Encoding:gzip が追加されます。これは、gzip 圧縮をサポートしていないクライアント ブラウザーに役立ちます。

構文: gzip_varyon |off;
デフォルト:
gzip_varyoff;
コンテキスト: http、サーバー、場所

Nginx で gzip を有効にする方法についての記事はこれで終わりです。Nginx で gzip を有効にする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Nginx Gzipモジュールの有効化と設定手順の詳細な説明
  • サーバー側(Apache、IIS、Nginx)でGZIP圧縮機能を有効にする方法
  • nginxでgzip圧縮を有効にする手順を完了する
  • NginxはGzipアルゴリズムを使用してメッセージを圧縮します
  • Nginx gzip コマンドの使用の概要

<<:  MySQLがサブクエリと結合の使用を推奨しない理由

>>:  よく知られているブラウザのDOCTYPEモード選択メカニズム

推薦する

Vue3 スロットの使用状況の概要

目次1. Vスロットの紹介2. 匿名スロット3. 名前付きスロット4. スコープ付きスロット5. 動...

Nginxはリバースプロキシを使用して負荷分散プロセス分析を実装します

導入dockerコンテナとdocker-composeに基づいて、Linux環境でのdockerの基...

WeChatアプレットがスネークゲームを実装

この記事では、参考までに、スネークゲームを実装するためのWeChatアプレットの具体的なコードを紹介...

Mysqlデータベースの文字化けに対処する方法

MySQL では、データベースの文字化けは一般的に文字セットを設定することで修正できますが、文字化け...

フロントエンド例外 502 不正なゲートウェイの原因と解決策

目次502 不正なゲートウェイ エラーの発生1. 502 不正なゲートウェイ エラーとは何ですか? ...

CSS3 レーダースキャンマップのサンプルコード

CSS3 を使用して、クールなレーダースキャン画像を実現します。 コード上で直接: // インデック...

MySQL 5.6 の「暗黙的な変換」によりインデックスが失敗し、データが不正確になる

背景SQL クエリを実行するときに、where 条件の vachar 型フィールドの単一引用符を削除...

RedisとMemcacheの比較と選び方

最近 redis を使っていて、とても便利だと感じているのですが、インメモリ データベースを選択する...

CSSのさまざまな背景、使用シナリオ、テクニックの詳細な分析

この記事はGitHub https://github.com/qq449245884/xiaozhi...

CentOS6.8 中国語/英語環境切り替えチュートリアル図

1. はじめに英語に慣れていない人は、システムを英語から中国語に変更したいかもしれません。一方、クラ...

CSS が複数のクラスに一致する方法のサンプルコード

CSSは複数のクラスにマッチする次の HTML タグ li、クラスはオープン スタイルです。私の要件...

純粋な HTML ページを送信し、パラメータを渡し、ID を確認する方法

プロジェクトにはアンケートが必要ですが、クライアントはアンケートのタイトルが純粋なHTMLタグでなけ...

Vue ページレンダリングにおけるキーの適用例チュートリアル

導入フロントエンドプロジェクトの開発プロセスでは、el-table によって表示される結果列がコンポ...

mysql8.0.18 で winx64 をインストールするための詳細なチュートリアル (画像とテキスト付き)

MySQLデータベースをダウンロードするには、https://dev.mysql.com/down...

nginx プロキシ ポート 80 からポート 443 への実装

nginx.conf設定ファイルは次のとおりです。 ユーザー nginx; ワーカープロセス 1; ...