0

我的应用程序正在根据用户国家代码更改内容。

服务器请求流

https 请求 -> nginx 处理 ssl 终止 -> varnish -> 如果没有缓存,则从 apache 获取内容

http rquest -> varnish -> 重定向到 https 链接 -> nginx 处理 ssl 终止 -> varnish -> 如果未缓存则从 apache 获取内容

使用清漆 GeoIP 模块,我找到了用户国家代码并将值设置为req.http.X-Country-Code我在应用程序中读取此标头值的标头。

问题:它总是缓存第一个命中并服务于所有位置

我希望添加不同的标题可以解决我的问题,你能指导我吗?

我不确定在哪里添加不同的标头 nginx 或 apache。

4

1 回答 1

1

添加Vary标头应该可以解决问题,如果您可以访问支持的代码,则最好在 Varnish 中更改哈希。

但是在哪里添加呢?最好的地方是在应用程序中进行。应用程序决定提供什么服务,它应该有权决定缓存什么以及何时缓存,毕竟您将来可以用其他东西替换 nginx 或 Varnish,并且您和客户端之间可能还有其他缓存。

于 2018-06-20T10:21:42.330 回答