2

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

所以我的计划是:

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

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

4

1 回答 1

1

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

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

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

于 2011-11-29T13:39:25.687 回答