使用Varnish& amp; Caching进行缓存改变自定义HTTP标头

时间:2011-11-29 09:59:01

标签: http caching varnish vary

我正在开发您的标准高流量电子商务网站,并希望使用Varnish设置缓存。此设置的特殊之处在于应用程序将根据用户的特定位置返回不同的内容。

所以我的计划是:

  • 使用GeoIP模块设置Nginx,因此我可以在应用程序后端的所有请求上获得X-Country:XX标题。
  • 将Rails应用程序配置为始终返回“Vary:X-Country”响应标头。
  • 将Varnish服务器放在Nginx和app后端后面,这样它就可以缓存Rails服务的多个版本的对象,并根据Nginx设置的请求头提供服务(客户端浏览器)

有没有人有这样的设置经验?我应该注意什么?

1 个答案:

答案 0 :(得分:1)

如果GeoIP查询速度很慢,并且/或者您想让人们覆盖国家/地区设置,您可以使用国家/地区 Cookie并对其进行前端Varnish检查。

  • 如果没有国家/地区cookie,请将请求转发到您的nginx后端以进行GeoIP查找。 Nginx提供带Set-Cookie: country=us标头的重定向。如果您想避免重定向并支持cookie拒绝客户端/机器人,ngingx可以将其转发给Rails并仍尝试在响应中设置国家/地区cookie。或者Varnish可以捕获重定向响应并使用新设置的cookie进行“重启”并转到后端
  • 如果您已有国家/地区Cookie,请在您的清漆哈希
  • 中使用此功能

如果Rails可以进行GeoIP解析,你不需要Ngingx,除非你用它来提供文件......