Php Varnish-循环控制器中提供Cookie/会话时的缓存

Php Varnish-循环控制器中提供Cookie/会话时的缓存,php,session,caching,varnish,round-robin,Php,Session,Caching,Varnish,Round Robin,我是第一次配置varnish,我遇到了一个问题,到目前为止我还没有找到完整的答案 简而言之,我的配置: 服务器0-清漆, be1-apache, be2-apache 清漆在循环中从2个后端拉出 我需要处理会话,所以我配置了一个简单的php脚本,它在会话变量中设置当前时间,然后重定向到第二个页面,其中显示该会话变量和使用的后端ip 我已经设法使这一半工作。它正在传递我所看到的会话信息,但问题出在这里——从后端返回的信息特定于在其上生成的后端。因此,返回的时间将取决于是为最后一个缓存调用be1还是

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

简而言之,我的配置:

服务器0-清漆, be1-apache, be2-apache

清漆在循环中从2个后端拉出

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

我已经设法使这一半工作。它正在传递我所看到的会话信息,但问题出在这里——从后端返回的信息特定于在其上生成的后端。因此,返回的时间将取决于是为最后一个缓存调用be1还是be2


有没有一种方法可以让它正常工作,使会话变量与处理它的后端无关?

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

  • 棘手的会议;设置额外的cookie变量(例如be=1或be=2)或使会话id可识别地属于后端1或2。Varnish然后可以决定请求应该转到哪个后端服务器。如果后端宕机,您的会话将丢失(无“会话故障转移”)
  • 将会话数据存储在数据库、memcached或其他所有后端共享的数据存储中
  • 不要使用会话,而是在cookie中序列化所有数据。由于客户端不可靠(客户端可以更改cookies),请确保验证数据是否未被篡改,例如,对数据进行签名

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

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

  • 棘手的会议;设置额外的cookie变量(例如be=1或be=2)或使会话id可识别地属于后端1或2。Varnish然后可以决定请求应该转到哪个后端服务器。如果后端宕机,您的会话将丢失(无“会话故障转移”)
  • 将会话数据存储在数据库、memcached或其他所有后端共享的数据存储中
  • 不要使用会话,而是在cookie中序列化所有数据。由于客户端不可靠(客户端可以更改cookies),请确保验证数据是否未被篡改,例如,对数据进行签名
  • 寻找一些库/可重用代码,你可以申请你的代码,祝你好运

    谢谢堆:)我会投票给你,但我需要15个代表。这给了我一个非常好的起点。谢谢堆:)我会投票给你,但我需要15个代表。这给了我一个非常好的起点。