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

推薦する

シンプルなカレンダー効果を実現する js

この記事では、シンプルなカレンダー効果を実現するためのjsの具体的なコードを参考までに共有します。具...

mysql のファイル mysql-bin.000001 とは何ですか? 削除できますか?

ポートを使用して MySQL をインストールした後、しばらくすると /var の容量が不足しているこ...

MySQLデータベース操作の基本コマンド

1. データベースを作成します。 データ data _name を作成します。 PHP でデータベー...

Alibaba Cloud ECSインスタンスのユーザールートパスワードとリモート接続方法を設定する方法

Alibaba Cloud サーバーを購入した後、新しいインスタンスが正常に動作できるようにするには...

ウェブサイトデザインにおいて非常に重要な概念であるdiv+floatの分析

ウェブサイトの構築では、HTML と CSS に関するさまざまな問題に常に遭遇します。ウェブサイト ...

ウェブデザイン経験

<br />著者はかつてWebデザインの初心者でしたが、継続的な探求と実践を通じて、今で...

Centos6.9 インストール Mysql5.7.18 ステップ記録

インストール手順 rpm -ivh mysql-コミュニティ-共通-5.7.18-1.el7.x86...

Linux システムで grub.cfg ファイルの破損を修復する手順

目次1. grub.cfg ファイルの紹介1. grub.cfg ファイルの場所2. grub.cf...

MySQL で B+ ツリー インデックスを使用する利点は何ですか?

この問題を理解する前に、まず MySQL テーブルのストレージ構造を確認し、次にバイナリ ツリー、マ...

wgetはウェブサイト全体(サブディレクトリ全体)または特定のディレクトリをダウンロードします

wgetコマンドを使用して、親ディレクトリの下のサブディレクトリ全体をダウンロードします。親ディレク...

Ubuntuで余分なカーネルを削除する方法

ステップ1: 現在のカーネルを表示する 読み取る $ uname -a Linux rew 4.15...

MySQL エンコーディング utf8 および utf8mb4 utf8mb4_unicode_ci および utf8mb4_general_ci

参考: MySQL 文字セットの概要utf8mb4 は MySQL 8.0 のデフォルトの文字セット...

Windows 10 で MySQL 8.0.12 の解凍バージョンをインストールして構成する方法 (グラフィック チュートリアル付き)

この記事では、MySQL 8.0.12 の解凍版のインストールと設定方法を記録し、皆様と共有します。...

MySQLの暗黙的な変換について話す

作業の過程で、暗黙的な変換が発生するケースが数多くあります。暗黙的な変換は、クエリの速度低下を引き起...

js で継承を実装する 5 つの方法

コンストラクタの借用この手法の基本的な考え方は単純です。サブタイプ コンストラクター内からスーパータ...