使用 Nginx 作为反向代理来实现会话持久化?

使用 Nginx 作为反向代理来实现会话持久化?

我使用 NGINX 作为反向代理,并使用两台 Apache 服务器作为上游服务器。

两个 Apache 服务器都安装了自定义 PHP 应用程序并共享相同的 MYSQL 数据库。

我相信 Apache 将会话存储在 /var/lib/sessions 中。

如果我使用 NGINX,如何克服与 Session 相关的问题?我理解 ip_hash;但这是唯一可行的方法吗?

想知道人们如何在服务器端解决这个问题?

答案1

严格来说,这与 nginx 无关,这是一项为用户提供跨多个后端的一致身份验证/授权系统的任务。除了 nginx,您还可以使用任何负载平衡引擎。

标准方法:

  • 使用 memcached 存储会话(尽管 memcache 作者不推荐这种方法,但这种方法被广泛使用,甚至 PHP 也对它有标准支持 - 您需要在 php.ini 中取消注释一行)
  • 使用 redis 达到相同目的
  • MySQL 的最新版本提供memcached-identical 接口用于在 MySQL 中存储会话(这次它们将由磁盘支持)- 使用你喜欢的任何东西,唯一的事情 - 它应该是一个集中存储

相关内容