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

推薦する

docker を使用して Kong クラスター操作を構築する

docker コンテナの下に kong クラスターを構築するのは非常に簡単です。公式サイトの紹介も非...

MySQL InnoDBストレージエンジンについて簡単に説明します

序文:ストレージ エンジンはデータベースの中核です。MySQL の場合、ストレージ エンジンはプラグ...

Reactは、読み込み、読み込み完了、読み込み失敗の3つの段階の原則分析を実装します。

最近ブログに書いたのですが、プロジェクトリストの中に写真がたくさんあり、最初は読み込みが遅いので、ス...

Vueはマルチタブコンポーネントを実装します

効果を直接確認するために、リロード、左を閉じる、右を閉じる、その他の機能を閉じるなどの右クリック メ...

Linux 環境の Apache サーバーでセカンダリドメイン名を設定する方法の詳細な説明

この記事では、Linux 環境の Apache サーバーでセカンダリ ドメイン名を構成する方法につい...

MySQL で distinct メソッドを使用する詳細な例

明確な意味: distinctive は、一意のレコードの数を照会するために使用されます。つまり、d...

Linux lsof コマンドの使用方法の詳細な説明

lsof (開いているファイルのリスト) は、プロセスによって開かれたファイルを表示するツールです。...

シンプルなナビゲーションバー機能を実現するHTML+CSS

さっそく、コードを見てみましょう(初心者:特に言うことはありません) <!DOCTYPE ht...

JavaScript における clientWidth、offsetWidth、scrollWidth の違い

1. コンセプトこれらはすべて Element の属性であり、要素の幅を示します。 Element....

VUE v-for の :key の詳細な説明

v-for タグにキーが追加されていない場合。 <!DOCTYPE html> <...

MySQL 5.7.20 無料インストールバージョンの設定方法グラフィックチュートリアル

インターネット上で多くの関連チュートリアルを見てきましたが、インストール プロセスにはまだいくつかの...

あなたをエキスパートに見せるための 13 個の JavaScript ワンライナー

目次1. ランダムなブール値( true / false )を取得する2. 指定された日付が営業日で...

vue v-for ループ オブジェクトの属性

目次1. ループオブジェクト内の値2. ループオブジェクト3. キーと値のループ1. ループオブジェ...

Nodejs エラー処理プロセス記録

この記事では、接続エラー ECONNREFUSED を例に、Node.js がエラーを処理するプロセ...