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