![リバース プロキシとして Nginx を使用してセッションを永続化できますか?](https://rvso.com/image/668047/%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%20%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%81%A8%E3%81%97%E3%81%A6%20Nginx%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E6%B0%B8%E7%B6%9A%E5%8C%96%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
私は、アップストリーム サーバーとして 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 と同一のインターフェース(今回はディスクバックアップになります) - 好きなものを使用してください。唯一の注意点は、集中型ストレージであることです。