ホームページ  >  記事  >  バックエンド開発  >  Nginx と PHP のインストールと構成 8 つの nginx セッション共有

Nginx と PHP のインストールと構成 8 つの nginx セッション共有

不言
不言オリジナル
2018-04-14 10:05:311385ブラウズ

この記事の内容は、Nginx と PHP の 8 つの nginx セッションのインストールと構成を共有することです。必要な友人が参照できるようにします。

いくつかの情報を確認し、他の人の書き込みも読みました。ドキュメントは次のように要約されています。nginxセッション

PHPの共有を実現するために、複数のサーバーがあり、負荷分散のためにnginxを使用し、同じIPが使用されるようにします。 は同じものにアクセスできます ページは異なるサーバーに分散されます セッションが同期されていない場合、最も一般的なログインステータスなどの多くの問題が発生します セッションの共有を解決するいくつかの方法があります。問題:

1セッションを使用しないで、代わりにcookie

sessionsを使用してサーバー側に保存されます。ユーザーを配置できます。ページにアクセスすることによって生成された

セッションは、転送ステーションとしてcookieを使用するcookieに配置されます。 ウェブサーバーAにアクセスし、セッションを生成し、リクエストがBサーバーに割り当てられるときに、それをcookie内に置きます。 Bまず、サーバーにこの セッションがあるかどうかを確認します。ない場合は、クライアントのcookieをチェックして、このセッションがあるかどうかを確認します。本当に存在しない場合は、cookiesessoinをサーバーBに同期させます。セッションを達成できます。 説明: このメソッドは実装が簡単で便利で、データベースの負担は増加しませんが、クライアントがcookieを無効にすると、セッションが発生します。同期する方法がないため、Web サイトに損失が生じます。cookie

は暗号化されていますが、依然として偽造される可能性があります。 2sessionはデータベース(MySQLなど)に保存されます

phpは、sessionをデータベースに保存するように設定できます。この方法は、mysqlを他のデータベーステーブルと一緒に配置することです。クラスターが確立されると、各 mysql ノードにこのテーブルが必要になり、この session テーブルのデータ テーブルがリアルタイムで同期される必要があります。 注: データベースを使用して

session

を同期すると、ビッグデータライブラリIOが追加され、データベースの負担が増加します。さらに、データベースの読み取りおよび書き込み速度が遅いため、セッションのタイムリーな同期が困難になります。 3

sessionは、memcachememcacheまたはRedisが存在します

配布可能、

php設定ファイルでストレージを設定メソッドはmemcacheなので、phpが自らsessionクラスターを作成し、sessionのデータをmemcacheに保存します。 説明: この方法で

session

を同期すると、データベースへの負担は増加せず、cookiesをメモリに置くよりもセキュリティが大幅に向上します。ファイルから読み取るよりも高速です。ただし、memcache は、メモリをさまざまな仕様のストレージ ブロックに分割します。このメソッドでは、memcache がメモリを完全に利用できず、メモリの断片化が発生すると判断されます。 , メモリオーバーフローも発生します。 4 および nginx

テクノロジーは、特定の

ip からのリクエストを同じバックエンドに送信できるため、この ip の下で、特定のクライアントと特定のバックエンドが安定したsessionip_hashは、upstream設定で定義されています: [html] view plain

コピー

りー

ip_hashは理解するのが簡単ですが、バックエンドの割り当てに使用できるのは係数ipのみであるため、ip_hashはいくつかの状況では使用できません:
1.は最もフロントエンドのサーバーではありません。

ip_hash

を使用するには、nginxがフロントエンドサーバーである必要があります。そうでない場合、nginxは正しいipを取得できず、に基づいて動作できなくなります。 ip ハッシュ .たとえば、squidをフロントエンドとして使用する場合、nginxipを取得するとき、squidのサーバーipアドレスのみを取得できます。このアドレスは間違いなく紛らわしいです。 2. nginxのバックエンドには、負荷分散の他の方法もあります。

nginx がバックエンドに他の負荷分散を持ち、別の方法でリクエストを迂回する場合、特定のクライアントからのリクエストは同じ セッション アプリケーションサーバー上には絶対に存在しません。このように計算すると、nginxバックエンドはアプリケーションサーバーを直接指すか、別のsquidを構築してからアプリケーションサーバーを指すことしかできません。最善の方法は、 location を使用して迂回を行い、session を必要とするリクエストの一部を ip_hash 経由で迂回させ、残りを他のバックエンドに迂回させることです。 関連する推奨事項:

Nginx と php のインストールと構成 7 番目の nginx 負荷分散のための 5 つの戦略

Nginx と php のインストールと構成 6 番目の Nginx リバース プロキシと負荷分散の導入ガイド

Nginxおよび php のインストールと構成 5. LINUX は PHPIZE を使用して PHP GD 拡張機能をインストールします

以上がNginx と PHP のインストールと構成 8 つの nginx セッション共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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