gpt4 book ai didi

php - Varnish -在轮询 Controller 中提供cookie/ session 时缓存

转载 作者:行者123 更新时间:2023-12-03 17:47:05 25 4
gpt4 key购买 nike

我是第一次配置 Varnish ,遇到了一个问题,到目前为止我还没有找到完整的答案。

我的配置简而言之:

server0 - Varnish ,
be1 - Apache ,
be2 - Apache

Varnish 从循环中的 2 个后端拉出。

我需要处理 session ,所以我配置了一个简单的 php 脚本,它在 session 变量中设置当前时间,然后重定向到显示该 session 变量和使用的后端 ip 的第二页。

我已经设法让这一半工作。它正在传递我所看到的 session 信息,但这是问题所在 - 从后端返回的信息特定于生成它的后端。因此,返回的时间将取决于是否为最后一次缓存调用了 be1 或 be2。

有没有一种方法可以使这个工作正常进行,这样无论处理它的后端如何, session 变量都是相同的?

最佳答案

这是 session 的普遍问题; cookie(随每个请求一起发送)包含 session 的标识符。真正的 session 数据存储在服务器或数据库中。有几种解决方案,例如:

  • 粘性 session ;设置一个额外的 cookie 变量(例如 be=1 或 be=2)或使 session ID 可识别地属于后端 1 或 2。然后 Varnish 可以决定请求应该发送到哪个后端服务器。如果后端出现故障,您的 session 就会丢失(没有“ session 故障转移”)
  • 将 session 数据存储在所有后端共享的数据库、memcached 或其他一些数据存储中
  • 不要使用 session ,而是将所有数据序列化到 cookie 中。由于客户端不可信(客户端可以更改 cookie),请确保验证数据是否未被篡改,例如签署您的数据

  • 寻找一些库/可重用代码,您可以申请您的代码并祝您好运!

    关于php - Varnish -在轮询 Controller 中提供cookie/ session 时缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6757119/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com