ホームページ  >  記事  >  バックエンド開発  >  Nginx リバースプロキシとロードバランシング

Nginx リバースプロキシとロードバランシング

WBOY
WBOYオリジナル
2016-07-29 09:11:241140ブラウズ

リバースプロキシとロードバランシングとは - リバースプロキシとは

自分のコンピュータAを使用して海外のWebサイトBにアクセスすることができますが、このとき、アクセスできる中間サーバーCがあります。外国の Web サイト B がある場合、自分のコンピュータを使用してサーバー C にアクセスし、C を使用して Web サイト B にアクセスできます。そしてこのときのサーバCをプロキシサーバと呼び、このアクセス方法をフォワードプロキシと呼びます。フォワード プロキシの特徴の 1 つは、どの Web サイトにアクセスしたいかを正確に知っていることです。別の例として、サーバー クラスターがあり、サーバー クラスター内の各サーバーのコンテンツが同じである場合、パーソナル コンピューターからサーバー クラスター内のサーバーに直接アクセスすることもできません。このとき、サードパーティのサーバーはアクセスできます。クラスターにアクセスするとき、この時点ではサードパーティのサーバーを介してサーバー クラスターのコンテンツにアクセスしますが、このときのプロキシ方式はリバース プロキシと呼ばれます。

サーバーの単位時間当たりのアクセス数が増加すると、サーバーへの負荷が増加します。サーバーにかかる圧力がその容量を超えると、サーバーはクラッシュします。サーバーのクラッシュを回避し、ユーザーにより良いエクスペリエンスを提供するために、通常は負荷分散を使用してサーバーへの負荷を分散します。では、負荷分散とは何でしょうか?そうです。サーバー クラスターを形成する多数のサーバーを構築できます。ユーザーが Web サイトにアクセスすると、最初に中間サーバーにアクセスし、サーバー クラスター内で負荷の少ないサーバーを中間サーバーに選択させます。をクリックし、選択したサーバーにアクセス要求を導入します。このようにして、すべてのユーザー アクセスにより、サーバー クラスター内の各サーバーの負荷が確実にバランスされ、サーバーの負荷が共有され、サーバーのクラッシュが回避されます。

Nginx 負荷分散の実装

Nginx は、リバース プロキシを介して負荷分散を実現できるサーバーです。Nginx サービスを使用して負荷分散を実現する場合、ユーザー アクセスは最初に Nginx サーバーにアクセスし、次に Nginx サーバーがアクセスします。サーバー クラスター テーブルからストレスの少ないサーバーを選択し、そのサーバーにアクセス要求を送信します。サーバー クラスター内のサーバーがクラッシュした場合、そのサーバーは候補サーバーのリストから削除されます。つまり、サーバーがクラッシュした場合、Nginx はサーバーへのアクセス要求を絶対に導入しません。

HTTPアップストリームモジュール

アップストリームモジュールはNginxサーバーの重要なモジュールです。アップストリーム モジュールは、ポーリング IP とクライアント IP の間のバックエンド ロード バランシングを実装します。一般的に使用される命令には、ip_hash 命令、サーバー命令、およびアップストリーム命令が含まれます。以下で個別に説明します。

負荷分散システムでは、ユーザーが特定のサーバーにログインし、ユーザーが 2 番目のリクエストを行うと、負荷分散システムであるため、各リクエストはサーバー クラスター内のサーバーにリダイレクトされます。の場合、この時点でサーバー A にログインしているユーザーを他のサーバーに再配置するのは明らかに不適切です。したがって、ip_hash 命令を使用してこの問題を解決できます。クライアント リクエストがすでにサーバー A にアクセスしてログインしている場合、2 番目のリクエストはハッシュ アルゴリズムを通じてバックエンド サーバーへのリクエストを自動的に見つけます。以下に例を挙げて説明します。

server ディレクティブは、主にサーバーの名前とパラメーターを指定するために使用されます。以下に例を挙げて説明します。

upstream コマンドは主に、proxy_pass および fastcgi_pass コマンドで使用できるプロキシ サーバーのグループを設定するために使用されます。デフォルトの負荷分散方法はポーリングです。

ip_hashコマンド

上記は、Nginx のリバース プロキシとロード バランシングを、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。