如何添加不同的自定义 header

How to add vary custom header

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

服务器请求流程

https request -> nginx handle the ssl termination -> varnish -> if not cacheed, get contents from apache

http rquest -> varnish -> redirect to https link -> nginx handle the ssl termination -> varnish -> if not cached get contents from apache

使用 varnish GeoIP 模块我找到了用户国家代码并将值设置为 header req.http.X-Country-Code 我在应用程序中读取了这个 header 值。

问题:它总是缓存第一个命中并提供给所有位置

我希望添加 vary header 可以解决我的问题,你能指导我吗?

我不确定在哪里添加 vary header nginx 或 apache。

添加 Vary header 应该可以解决问题,如果您可以访问支持的代码,那么最好在 Varnish 中更改 hash

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