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 を使用する例

推薦する

サイトマップをウェブページの下部に配置するメリットと例

以前は、ほとんどすべての Web サイトに、すべてのページをリストしたサイトマップ ページがありまし...

TSで最も一般的な宣言マージ(インターフェースマージ)

目次1. マージインターフェース1.1 非関数メンバー1.2 関数メンバー序文:今日お話ししたいのは...

CSS で 3 列レイアウトを実装するいくつかの方法と利点と欠点

序文3 列レイアウトは、その名前が示すように、両側が固定され、中央が適応します。実際の開発では、3 ...

Vue3.0はvue-grid-layoutプラグインを使用してドラッグレイアウトを実装します。

目次1. プラグイン2. 幕間3. 実装4. 検証機能1. プラグインまず、私たちが選んだプラグイン...

MySQL インストール図の概要

MySQL 5.5 のインストールと設定方法のグラフィックチュートリアルMySQL 5.5 のインス...

Docker ファイルの保存パス、ポート マッピング操作モードの変更

コンテナの起動コマンドを取得する方法コンテナはすでに作成されていますが、その起動パラメータ(データが...

MySQL の遅いクエリを見つける方法

序文誰もが日常業務で SQL の最適化を経験したことがあると思います。したがって、最適化の前に、遅い...

MySQL の FIND_IN_SET() と IN の違いを簡単に分析します

以前、あるプロジェクトでMysql FIND_IN_SET関数を使用したことがありますが、非常に便利...

画像ボタン送信とフォーム繰り返し送信の問題に関する議論

多くの場合、フォームを美しくするために、送信ボタンが画像に置き換えられます。ただし、細部に注意を払わ...

動的なテーブル効果を実現するJavaScript

この記事では、動的なテーブル効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

Vue-cliフレームワークはタイマーアプリケーションを実装します

技術的背景このアプリケーションは vue-cli フレームワークを使用し、カスタム コンポーネント ...

docker compose を使用して FastDfs ファイル サーバーをインストールする詳細な例

ドッカーの作成 バージョン: '2' サービス: fastdfsトラッカー: ホスト...

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

この記事では、マウスを動かしたときにセカンダリ メニュー バーを実装するために HTML+CSS を...

Linux のよく使うコマンドの使い方を詳しく解説(第 2 回)———— テキストエディタのコマンド vi/vim

vi/vim の紹介どちらもマルチモード エディターです。違いは、vim が vi のアップグレー...

CSS3 3Dクールキューブ変形アニメーションの実装

私はコーディングが大好きです。コーディングすると幸せになります!みなさんこんにちは、Counterで...