varnish - 清漆:可能在 API 调用后重写/重新引导请求?
问题描述
如何让 Varnish 像开关一样工作?
我需要使用原始客户端请求的请求来咨询身份验证服务。该身份验证服务会根据原始请求检查是否允许访问,并简单地回复状态代码,并且可能在标头中提供更多信息。根据来自该身份验证服务的状态代码和标头信息,我希望清漆提供来自不同后端的内容。根据状态代码,后端可能会有所不同,我想在 Varnish 获取内容之前添加一些额外的标头。
最后清漆应该缓存并回复客户端。
解决方案
是的,使用一些 VCL 和 VMOD 是可行的。例如,您可以使用cURL VMOD来vcl_recv
触发针对身份验证服务的 HTTP 请求,检查响应,然后将该信息用于后端选择和其他缓存决策(这将只是简单的 VCL)。一个更好的选择是http VMOD,但它只在 Varnish Enterprise 中可用。实际上,链接文档中提供了与您想要实现的目标类似的示例;请参阅“HTTP 请求”部分。
在任何情况下,使用一些高性能缓存机制来最小化与身份验证服务的交互是一个好主意。例如,您可以为此使用redis VMOD(甚至 Varnish 本身!)。
推荐阅读
- c++ - 如何在屏幕上显示经过时间的计数器,就像现实生活中的秒表一样?我对编程很陌生(C++)
- angular - 刷新页面时,Angular路由器导致404
- angular - Angular 安装:npm warn 已弃用 /module angular 找不到
- python - 操纵 pandas 数据框中的值以依赖于不同的其他值
- python - Django, RestAPI, Microsoft Azure, 网站, 虚拟机, ubuntu
- javascript - 向 HTML 添加内容
标签
- javascript - 代码没有从 ANTJS v3 升级到 ANTJS v4
- python - 对于循环,为什么索引超出范围?
- reactjs - 带有 Redux 设置的 TypeScript CRA
- scripting - 为什么我在 Delphi 脚本中的记录类型定义上出现语法错误?