【问题标题】:PHP maintain Session ID Between Multiple Servers MemcachedPHP 维护多个服务器之间的会话 ID Memcached
【发布时间】:2016-01-31 06:40:02
【问题描述】:

我需要在多个服务器之间共享 PHP 会话。但是,我不确定如何维护在一台服务器上创建的会话 ID 以及如何将其传递给下一台服务器。

本质上,客户端可以上传文件,但文件发送到哪个服务器取决于哪个服务器没有过载。

例如,在 test.com 上调用 session_start()

一个 AJAX 帖子被发送到 serv1.test.com。当我在 serv1.test.com 上调用 session_start() 时,我希望它提取由 test.com 上的 session_start() 创建的现有会话信息。但是,这似乎不是 PHP 会话的工作方式?

我安装了 Memcached 并在此处遵循本指南:

https://www.digitalocean.com/community/tutorials/how-to-share-php-sessions-on-multiple-memcached-servers-on-ubuntu-14-04

我有一个 test.com 和 serv1.test.com 配置为使用的集中式内存缓存服务器。但是, session_start() 在每个服务器上创建一个唯一的会话,而不是重复使用同一个会话。如果我将 PHPSESSIONID 发送到每个服务器,那么我可以加载现有会话。

如何完成我想做的事情?我可以将 PHPSESSIONID 作为 AJAX POST 中的变量发送,但这不是安全风险吗?那是用户可以改变的东西......

如何让 serv1.test.com 继续使用 test.com 上的同一会话集?如何将该会话 ID 安全地传递给 serv1.test.com,以便我可以使用 session_id("existingsessionid_from_test.com") 打开现有会话?

【问题讨论】:

  • 启用 cookie 的客户端将始终将会话 cookie 发送回服务器。我相信在您的情况下,如果 cookie 参数设置正确,它也会发送到子域。如果您使用集中式会话存储并且您在两台服务器上都正确配置了它,那么您不必做任何花哨的事情(例如,使用 ajax 发布会话 id)。
  • 每台服务器都使用 php5-fpm 运行 nginx。 php.ini 文件配置为使用 memcached,并使用 memcached 服务器的 IP 地址作为 session.save_path。每个服务器都将其会话存储在 memcached 服务器上,但来自根域 test.com 的请求和来自 serv1.test.com 的请求不会导致发送相同的 session_id / cookie。我在每台服务器上将 cookie 域配置为 .test.com,但这也没有什么不同。对 test.com/set_session.php 的调用然后对 serv1.test.com/get_session.php 的调用不会返回任何内容 - 会话 ID 不同。
  • test.com 与 serv1.test.com 位于不同的服务器上 --- DNS 配置为将请求发送到正确的服务器。这是否与即使每个服务器使用相同的会话配置,会话 ID 也不同的原因有关?我如何让两台服务器在会话开始时生成相同的 Id,因为它们都将会话保存在同一个 memcached 实例上?
  • 您是否将会话 cookie 设置为可用于子域?如果没有可用的,session_start() 将生成新的 id。看到这个[链接]stackoverflow.com/questions/644920/…
  • 是的,这一次成功了 set session.cookie_domain = ".example.com" --- 会话现在像我想象的那样共享......非常感谢!这让我发疯了!

标签: php session memcached sharing


【解决方案1】:

解决方案是将 session.cookie_domain 设置为包含子域。

session.cookie_domain = ".test.com"

感谢 frz3993

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2012-08-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    相关资源
    最近更新 更多