Nginx リバース プロキシでセッション永続性を実装する 2 つの方法の詳細な説明

Nginx リバース プロキシでセッション永続性を実装する 2 つの方法の詳細な説明

1. ip_hash:

ip_hash は、送信元アドレス ハッシュ アルゴリズムを使用して、サーバーが利用できない場合を除き、常に同じクライアントからの要求を同じバックエンド サーバーに送信します。

ip_hash 構文:

 アップストリームバックエンド{
  ip_ハッシュ;
  サーバー backend1.example.com;
  サーバー backend2.example.com;
  サーバー backend3.example.com がダウンしています。
  サーバー backend4.example.com;
}

ip_hash はシンプルで使いやすいですが、次のような問題があります。

  • バックエンド サーバーがダウンすると、セッションは失われます。
  • 同じ LAN からのクライアントは同じバックエンド サーバーに転送されるため、負荷の不均衡が発生する可能性があります。
  • これは CDN ネットワークには適用されません。また、フロントエンドにプロキシがある状況にも適用されません。

2. スティッキークッキー挿入:

セッション アフィニティを有効にするには、sticky_cookie_insert を使用します。これにより、同じクライアントからの要求が、サーバーのグループに対して同じサーバーに配信されるようになります。 ip_hash との違いは、IP に基づいてクライアントを判断するのではなく、Cookie に基づいてクライアントを判断することです。したがって、上記 ip_hash 内の同一 LAN からのクライアントとフロントエンド プロキシによって負荷の不均衡が発生する状況を回避できます。

文法:

 アップストリームバックエンド{
  サーバー backend1.example.com;
  サーバー backend2.example.com;
  スティッキークッキー挿入 srv_id 有効期限=1時間 ドメイン=toxingwang.com パス=/;
}

例:

  • 有効期限: ブラウザにクッキーを保存する時間を設定します
  • ドメイン: クッキーのドメインを定義します
  • パス: クッキーのパスを定義します

さらに、バックエンド サーバー自体を使用して、関連するメカニズムを通じてセッションの同期を維持することもできます。これについては後で詳しく説明します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • nginxリバースプロキシのマルチポートマッピングの実装
  • Nginx リバース プロキシはポート 80 のリクエストを 8080 に転送します
  • Nginx リバース プロキシを使用して go-fastdfs を実行する例
  • Nginxリバースプロキシ設定でプレフィックスが削除される
  • Nginx リバースプロキシの例の詳細な説明

<<:  MySQL/MariaDB ルートパスワードリセットチュートリアル

>>:  MySQL にテーブルデータを挿入するときに中国語の文字化けが発生する問題を解決する方法

推薦する

MySQL kill コマンドの使用ガイド

KILL [接続 | クエリ] processlist_id MySQL では、各接続は個別のスレ...

elementui での el-cascader カスケードセレクタの実践

目次1. 効果2. メインコード1. 効果機能: インターフェイスから取得したデータを使用してオプシ...

Vue で Baidu Map を呼び出して経度と緯度を取得する

プロジェクトでは、現在地の緯度経度を取得したり、場所を検索して緯度経度情報を取得したりする必要があり...

VMwareワークステーションとデバイス/資格情報の非互換性によって発生する起動エラーについて

VMware Workstationsが仮想マシンエラーを起動する エラー レポートのリンク htt...

HTML インライン要素と HTML ブロックレベル要素の概要と違い

ブロックレベル要素の機能: • 常に新しい行から始まり、それ自体で 1 行を占め、後続の要素も新しい...

HTML 縦列表示テキストを使用してテキストを縦列で表示します

コードをコピーコードは次のとおりです。 <span style='display:bl...

Linux オペレーティング システムでよく使用される MySQL コマンドの概要

以下に、一般的な MySQL コマンドをいくつか示します。 -- データベース サービスを開始します...

MySql キャッシュ クエリの原理とキャッシュ監視およびインデックス監視の概要

クエリキャッシュ1. クエリキャッシュの動作原理クエリ ステートメントを実行する前に、MySQL は...

Docker で Node プロジェクトをビルドしてデプロイする方法

目次DockerとはクライアントサイドDocker基本的なDocker操作画像名画像をプルするその他...

スタイルをより標準化するための CSS の書き方に関する 5 つのヒント

1. CSSをアルファベット順に並べるアルファベット順ではありません:コードをコピーコードは次のとお...

JavaScriptでフロアナビゲーションエフェクトを作成するプロセスの詳細な説明

目次この期間の目標1. 関数の実装1.1 構造層1.2 スタイルレイヤー1.3 行動層1.3.1 フ...

JavaScript進捗管理の詳しい説明

目次序文質問原理テスト序文プログラムを作成するときに、読み込みの進行状況やアップロードの進行状況など...

nginx プロキシ サーバーで双方向証明書検証を構成する方法

証明書チェーンを生成するスクリプトを使用して、ルート証明書、中間証明書、および 3 つのクライアント...

JavaScript で円形カルーセルを実装する

この記事では、円形カルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹介しま...

MySQL 5.7 インストール MySQL サービスを開始できませんが、サービスはエラーを報告しません

MySQL 5.7 をインストールするには 2 つの方法があります。1 つはインストーラをダウンロー...