繁体   English   中英

清漆 - 当 cookies / 会话以循环方式提供时缓存

[英]Varnish - cache when cookies / sessions are supplied in round robin director

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

简而言之,我的配置:

server0 - 清漆,be1 - apache,be2 - apache

清漆以循环方式从 2 个后端拉出。

I need to deal with sessions, so I have configured a simple php script which sets the current time in a session variable, then redirects to a 2nd page which displays that session variable and the ip of the backend that was used.

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

有没有办法让这个工作,以便 session 变量是相同的,无论处理它的后端如何?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM