私は、アップストリーム サーバーとして 2 つの Apache サーバーを使用し、リバース プロキシとして NGINX を使用しています。
両方の Apache サーバーにはカスタム PHP アプリケーションがインストールされており、同じ MYSQL データベースを共有しています。
Apache はセッションを /var/lib/sessions に保存すると思います。
NGINX を使用している場合、セッション関連の問題をどうやって解決すればよいでしょうか? ip_hash については理解していますが、それが唯一の実行可能な方法でしょうか?
人々がサーバー側でこの問題をどのように解決するのか知りたいです。
答え1
厳密に言えば、これは nginx とは何の関係もありません。これは、複数のバックエンドにわたって一貫した認証/承認システムをユーザーに提供するタスクです。nginx の代わりに、任意の負荷分散エンジンを使用できます。
標準的なアプローチ:
- セッションを保存するために memcached を使用します (memcache の作者はこれを推奨していませんが、この方法は広く使用されており、PHP でも標準でサポートされています - php.ini の 1 行のコメントを解除する必要があります)
- 同じ目的でRedisを使用する
- MySQLの最新バージョンではMySQL にセッションを保存するための memcached と同一のインターフェース(今回はディスクバックアップになります) - 好きなものを使用してください。唯一の注意点は、集中型ストレージであることです。