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

推薦する

React の調整アルゴリズム Diffing アルゴリズム戦略の詳細な説明

目次アルゴリズム戦略単一ノードの差分配列ノードの差分キー値の使用要件アルゴリズム戦略React の調...

JavaScript配列の重複排除のいくつかの方法についての詳細な説明

目次1.重複排除を設定する2. 重複を削除するには、2 回の for ループを使用します。 3. i...

Windows 10 の Docker で countly-server を展開して実行するプロセス

私は最近countlyに触れて、慣れてきました。私は、必要に応じてcountlyのクラッシュプラグイ...

Linux で killall コマンドを使用してプロセスを終了する 8 つの例

Linux コマンドラインには、プロセスを強制終了するためのコマンドが多数用意されています。たとえば...

CSS エクスペリエンスを充実させる 5 つの便利な CSS セレクターを紹介します

Web デザイナーとして豊富な CSS 経験を持つ私たちは、あらゆる種類のコード構文、互換性、スニペ...

MySQL OOM (メモリオーバーフロー) の解決策

OOM は「Out Of Memory」の略で、メモリオーバーフローを意味します。メモリ オーバーフ...

Linux の sudo 脆弱性により不正な特権アクセスが発生する可能性がある

Linux で新たに発見された sudo の脆弱性を悪用すると、特定のユーザーが root としてコ...

CentOS7仮想マシンで固定IPアドレスを設定する方法

私の開発環境は、VMWare 仮想マシンに CentOS をインストールし、ホスト ファイルにインタ...

JavaScript でシンプルなタイマーを実装する

この記事では、参考までに簡単なタイマーを実装するためのJavaScriptの具体的なコードを紹介しま...

Sparkの紹介とHadoopとの比較

目次1. SparkとHadoopの比較1.1 Haoopの欠点1.2 Hadoop MR に対する...

Linux で特定のユーザーまたはユーザー グループに対して SSH を有効または無効にする方法

会社の基準により、特定のユーザーだけに Linux システムへのアクセスを許可することができます。あ...

Linuxカーネルで中国語の文字を出力する方法

次のように、Windows/MacOS からログインした Linux の SSH ターミナルで簡単に...

JavaScript プロトタイプのデータ共有とメソッド共有の実装を調べる

データ共有プロトタイプにはどのようなデータを書き込む必要がありますか?共有する必要があるデータはプロ...

Nginxはクロスドメインの問題を解決し、サードパーティのページを埋め込む

目次序文困難クロスドメイン定義nginxの機能リバースプロキシ静的と動的の分離達成しようとする最終結...

Vue.js で AntV X6 を使用する手順の例

目次0x0 はじめに0x1 インストール0x2 ノードサイドバー0x3 統合例0x0 はじめにプロジ...