我想用我新部署的 Rails Web 应用程序来实现 Varnish。
Rails version 3.2.12 with
Ruby 1.9.2p318 (2012-02-14 revision 34678) [i686-linux]
在我的应用程序中,用户身份验证是通过cookie完成的,但是当cookie存在时,varnish不会缓存内容。所以我发现对于登录的用户,varnish正在将请求转发到我的应用程序。我对varnish很陌生,不知道如何解决这个问题。也许我需要在 vernish 配置文件中添加一些 block 。但是事情是实时的,用户正在使用我的应用程序。我已经停止了 varnish。任何具体的帮助都会得到真正的应用。
最佳答案
我在这个博客中找到了解决方案Ruby on Rails, Varnish and user dependent content我认为根据博客的解决方案是:
获得此问题的简单解决方案的一个好方法是将应用程序 cookie 添加到 Varnish 用于查找缓存内容的哈希中。这是在配置文件的 vcl_hash 函数中完成的:
sub vcl_hash {
if (req.http.Cookie ~ "your_application_cookie") {
hash_data(req.url);
hash_data(req.http.Cookie);
return (hash);
}
}
关于ruby on Rails 应用程序使用 Varnish 缓存管理 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16237678/