我的应用程序正在根据用户国家/地区代码更改内容。
服务器请求流程
https请求 - > nginx处理ssl终止 - >清漆 - >如果没有缓存,则从apache获取内容
http rquest - >清漆 - >重定向到https链接 - > nginx处理ssl终止 - >清漆 - >如果没有缓存从apache获取内容
使用清漆GeoIP模块我找到了用户国家代码并将值设置为标题req.http.X-Country-Code
我在应用程序中读取了此标头值。
问题:它始终会缓存第一个匹配并投放到所有位置
我希望添加不同的标题可以解决我的问题,你能指导我吗?
我不知道在哪里添加vary header nginx或apache。
答案 0 :(得分:1)
添加Vary
标头应该可以解决此问题,如果您有权访问支持的代码,则最好在Varnish中更改hash。
不过在哪里添加呢?最好的地方是在应用程序中执行此操作。该应用程序可以决定要提供的服务,它应该有权决定要缓存的内容以及时间,毕竟将来您可以用其他东西替换nginx或Varnish,并且您和客户端之间可能还会有其他缓存。