nginx をプロキシ キャッシュとして使用する方法

nginx をプロキシ キャッシュとして使用する方法

キャッシュを使用する目的は、バックエンドの負荷を軽減し、Web サイトの同時実行性を向上させることです。ウェブサイトの設計では、より優れた分散化を実現するために、リクエストをフロントエンドに集中させて処理できるように最善を尽くします。

一般的なキャッシュ タイプには、クライアント キャッシュ、プロキシ キャッシュ、サーバー キャッシュなどがあります。

クライアント キャッシュ [キャッシュはローカルに保存され、たとえばデータはユーザーのブラウザ キャッシュに保存され、ローカルで読み取られます] プロキシ キャッシュ [キャッシュはプロキシまたはミドルウェアに保存され、たとえばサーバーから取得したデータは nginx 上に配置され、アクセス時に nginx キャッシュが直接読み取られます] サーバー キャッシュ [キャッシュはサーバーに保存され、多くの場合、redis や memchache が使用されます。たとえば、キーと値の形式のデータです]

プロキシ キャッシュの簡単な説明:

Nginx プロキシ キャッシュ構成:

proxy_cache_path /opt/www/cache レベル=1:2 キーゾーン=テストキャッシュ:10m 最大サイズ=10g 非アクティブ=60m 使用テンポパス=オフ;
 
サーバー{ 
	 聞く 80;
	 サーバー名 cache.test.com;
	 #rewrite ^/(.*)$ https://${server_name}$1 permanent; #Httpsへジャンプ
 
     $request_uri が test.html|ログイン|登録|パスワード|\/リセットの場合
            $cookie_nocache を 1 に設定します。
     }
 
	 位置 / { 
		    proxy_cache test_cache; #keys_zone の値は proxy_cache_path proxy_pass http://127.0.0.1:8081 と等しくなければなりません。
            プロキシキャッシュの有効時間 200 304 12時間;
            proxy_cache_valid 任意の 10m;
            proxy_cache_key $host$uri$is_args$args;
            proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
            proxy_no_cache $http_pragma $http_authorization;
    }
}

パラメータの説明:

  • proxy_cache_path キャッシュファイルパス
  • レベルはキャッシュファイルのディレクトリ階層を設定します。レベル=1:2は2つのディレクトリレベルを意味します。
  • keys_zone は、キャッシュ名と割り当てられた領域のサイズを設定します。10m は 10 MB を意味します。
  • max_size このディレクトリの最大サイズ。10g は 10 GB を意味します。 10G を超えると、nginx は独自の排除および削除ルールに従って一部のキャッシュ データを削除し、デフォルトでキャッシュ時間が最も長いキャッシュ データを上書きします。
  • 非アクティブ 指定された時間内に誰もアクセスしない場合は削除されます。60mは60分を意味します
  • use_temp_pathは一時ファイルを保存するために使用されます。オフに設定することをお勧めします。

その他のパラメータについては、nginx の公式 Web サイトを参照してください: モジュール ngx_http_proxy_module: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path

  • proxy_cache test_cache は、プロキシ キャッシュが有効になっていることを示します。プロキシ キャッシュを使用しない場合は、この値を off に設定します。
  • proxy_pass プロキシアドレス
  • proxy_cache_valid 200 304 12h; ステータス コード 200 または 304 の応答は 12 時間で期限切れになります。
  • proxy_cache_valid any 10m; 200 および 304 以外のステータス コードのキャッシュ時間は 10 分です。
  • proxy_cache_key $host$uri$is_args$args; デフォルトのキャッシュ キーを設定します。 $is_args は、リクエスト内の URL にパラメータがあるかどうかを示します。パラメータがある場合、$is_args の値は「?」になります。パラメータが指定されていない場合は、空の文字列になります。 $args は HTTP リクエスト内のパラメータを表します。
  • proxy_no_cache URL が test.html 、 login 、 register 、 password 、 reset と一致する場合、この URL に対応するページはキャッシュされません。

設定が完了したら、構文が正しいかどうかを確認します。nginx -tc /etc/nginx/nginx.conf、次にサービスを再ロードします。nginx -s reload

付録: nginx のスムーズな再起動

[root@localhost nginx]# nginx -s リロード

[root@localhost nginx]# ps -elf|grep nginx

1 S ルート 10175 1 0 80 0 - 27830 sigsus 09:52 ? 00:00:00 nginx: マスタープロセス nginx

5 S www 11165 10175 0 80 0 - 28893 ep_pol 18:10 ? 00:00:00 nginx: ワーカープロセス

5 S www 11166 10175 0 80 0 - 28893 ep_pol 18:10 ? 00:00:00 nginx: ワーカープロセス

5 S www 11167 10175 0 80 0 - 27830 ep_pol 18:10 ? 00:00:00 nginx: キャッシュマネージャプロセス

再起動が完了すると、期限切れのキャッシュを削除するという主な機能を持つ、memcached の LRU アルゴリズムに似た追加のキャッシュ マネージャーが存在します。ただし、キャッシュの有効期限が切れておらず、サーバーのデータが変更されている場合は、間違ったデータにアクセスされてしまいます。これはプログラミングを通じて実現できます。

要約する

nginx をプロキシ キャッシュとして使用する方法については、これで終わりです。nginx をプロキシ キャッシュとして使用する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Nginx リバース プロキシとキャッシュおよびキャッシュのクリア方法
  • オペレーターが知っておくべき 18 個の Nginx プロキシ キャッシュ構成のヒント (どれを知っていますか?)

<<:  MySQLデータベースの基礎知識

>>:  マウスを動かしたときにセカンダリメニューバーを実装するために HTML+CSS を使用する例

推薦する

SQL文でのgroup byの使用について簡単に説明します

1. 概要Group by は、by の後の規則に従ってデータをグループ化することを意味します。いわ...

Dockerイメージを構築する2つの方法

目次既存のイメージからイメージを更新します。イメージを最初から構築する: Docker イメージ リ...

Win10でIIS10を構成し、ASPプログラムのデバッグをサポートする手順

マイクロソフトIIS (Internet Information Server) は、Microso...

Ubuntu で G++ を使用して CPP ファイルをコンパイルする

g++ を使用して初めて cpp ファイルをコンパイルしたとき、未定義の参照エラーが報告されました。...

CSSはコーナーカット+ボーダー+投影+コンテンツ背景色のグラデーション効果を実現します

CSS を使用するだけで、コーナーカット + ボーダー + 投影 + コンテンツの背景色のグラデーシ...

上部の固定ナビゲーションバーによって CSS アンカーの配置がブロックされる問題の解決方法

多くのウェブサイトでは、ユーザーが簡単に検索したり他のページに移動したりできるように、上部にナビゲー...

chkconfig および systemctl コマンドを使用して Linux サービスを有効または無効にする方法

これは Linux 管理者にとって重要な (そして素晴らしい) トピックなので、誰もが Linux ...

MySQLデータベースの圧縮バージョンのインストールと設定に関する詳細なチュートリアル

目次1. MySQLをダウンロードする2. 圧縮パッケージを解凍する3. MySQLを初期化する4....

MySQL を暗号化および復号化するいくつかの方法 (要約)

目次前面に書かれた双方向暗号化エンコード/デコードAES_ENCRYPT/AES_DECRYPT D...

nginx設定ファイルの場所を見つける方法の詳細な説明

よく知らないサーバーの場合や、かなり前にインストールした場所を忘れてしまった場合、構成ファイルの場所...

OpenSSL を使用した Kubernetes 証明書の生成の概要

Kubernetes は、基本認証、トークン認証、CA 認証の 3 種類の認証をサポートしています。...

vue.js を使用してドラッグ アンド ドロップ機能を実装する方法

序文ドラッグ アンド ドロップ機能を追加すると、プログラムがより自然でユーザーフレンドリーになります...

JavaScriptのスリープ関数の使用

目次1.スリープ機能2.タイムアウトを設定する3. 約束4. 非同期待機5. 1秒後に出力1、2秒後...

ビジネス HTML メール作成に関する提案

許可ベースの電子メール マーケティングにより、マーケティングとプロモーションのコストを大幅に削減でき...

Webフロントエンド開発経験の概要

XMLファイルは、可能な限りutf-8でエンコードする必要があります。gb2312には、?など、保存...