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 にテーブルデータを挿入するときに中国語の文字化けが発生する問題を解決する方法

推薦する

WeChatアプレットbindtapとcatchtapの違いの詳細な説明

目次1. イベントとは何ですか? 2. イベントの使い方3. バインドタップとキャッチタップの違い4...

Docker を使用して Microsoft Sql Server を展開するための詳細な手順

目次1 背景2 コンテナを作成する3 SAパスワードを変更する4 mssql のリンク5. コンテナ...

IframeとFRAMEの違いの分析

1. Iframe タグの使用<br />Iframe については、「忘れられた隅」に放...

Vueは、選択した月に応じて日付に対応する曜日を動的に表示します。

私たち謙虚なプログラマーは、今でもこう歌わなければなりません。「あなたも私も、この世に生まれて、一日...

VUE ユニアプリの条件付きコーディングとページレイアウトに関する簡単な説明

目次条件付きコンパイルページレイアウト要約する条件付きコンパイル条件付きコンパイルでは、特別なコメン...

Linux で AIDE に基づいてファイルシステムの整合性を検出する方法

1. 補助AIDE (Advanced Instruction Detection Environm...

Windows 10 での MySQL 8.0.20 のインストールと設定方法のグラフィック チュートリアル

Win10システムにMySQL8.0.20をローカルにインストールし、個人的にテストして利用可能であ...

Docker を使用して Go Web アプリケーションをデプロイする方法

目次なぜ Docker が必要なのでしょうか? Docker デプロイメントの例コードの準備Dock...

Webリクエストと処理のTomcatソースコード分析

目次序文1. エンドポイント2. 接続ハンドラ3. コヨーテ4. コンテナ責任チェーンパターン序文T...

TypeScript でオブジェクト キーの値の範囲を制限する方法

TypeScript を使用する場合、TypeScript が提供する型システムを使用してコードのあ...

Linux (Ubuntu 18.04) に Anaconda をインストールする詳細な手順

Anaconda は、大規模なデータ処理、予測分析、科学計算のための最も人気のある Python デ...

Webフロントエンド開発エンジニアが習得すべきコアスキル

Web フロントエンド開発に含まれる内容は、主に W3C 標準の構造、動作、パフォーマンスです。では...

JavaScript で右クリック メニューを統合する layim のサンプル コード

目次1. 効果の実証2. 実装チュートリアル3. 最後に、完全なコードを添付します4. その他の右ク...

react+antd.3x は IP 入力ボックスを実装します

この記事では、IP入力ボックスを実装するための react+antd.3x の具体的なコードを参考ま...

IE8を閲覧するときにウェブサイトが自動的にIE7互換モードを使用するようにする

序文IE の将来のすべてのバージョンで Web ページの外観が一貫していることを保証するために、IE...