首页 > 解决方案 > 清漆:可能在 API 调用后重写/重新引导请求?

问题描述

如何让 Varnish 像开关一样工作?

我需要使用原始客户端请求的请求来咨询身份验证服务。该身份验证服务会根据原始请求检查是否允许访问,并简单地回复状态代码,并且可能在标头中提供更多信息。根据来自该身份验证服务的状态代码和标头信息,我希望清漆提供来自不同后端的内容。根据状态代码,后端可能会有所不同,我想在 Varnish 获取内容之前添加一些额外的标头。

最后清漆应该缓存并回复客户端。

标签: varnish

解决方案


是的,使用一些 VCL 和 VMOD 是可行的。例如,您可以使用cURL VMODvcl_recv触发针对身份验证服务的 HTTP 请求,检查响应,然后将该信息用于后端选择和其他缓存决策(这将只是简单的 VCL)。一个更好的选择是http VMOD,但它只在 Varnish Enterprise 中可用。实际上,链接文档中提供了与您想要实现的目标类似的示例;请参阅“HTTP 请求”部分。

在任何情况下,使用一些高性能缓存机制来最小化与身份验证服务的交互是一个好主意。例如,您可以为此使用redis VMOD(甚至 Varnish 本身!)。


推荐阅读