我正在开发一个连接到外部后端服务(从另一家公司购买)的系统,该系统将大大超出每月的请求配额。我正在尝试创建一个代理/缓存来缓存请求,并使用缓存的响应(如果存在的话)。
用例:
案例1:
案例2:
案例3:
要求:
到目前为止的想法:
到目前为止,我已经研究了两种不同的系统,分别是Varnish(https://varnish-cache.org/)和Squid(http://www.squid-cache.org/)。我尝试过Squid,但我根本不了解如何设置配置以像上面那样工作。样本配置文件确实很乱,无法理解,我也找不到在线的指南。
我调查了Varnish,据我所知可能可以使用。但是我在这里有问题。
问题:
在Varnish的/etc/varnish/default.vcl
中,可以添加后端,因此我添加了以下内容:
backend page2 {
.host = "url2.external-backend.com";
.port = "443";
}
这提供了类似的内容(我不记得了,现在也看不到错误消息):
Backend host "url2.external-backend.com": resolves to multiple IPv4 addresses.
Only one address is allowed.
Please specify which exact address you want to use, we found these:
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
我不敢用IP:s代替主机名,而且我不确定创建导演是正确的方法。原因是我无法控制主机名,并且他们不能保证IP地址不会更改。
问题:
答案 0 :(得分:1)
我相信您正在寻找vmod-goto:https://docs.varnish-software.com/varnish-cache-plus/vmods/goto/
它不是开源的,但可以完全解决您的问题。
答案 1 :(得分:0)
1和2可以毫无问题地完成。对于基于循环DNS的后端(相同的名称为每个请求提供不同的IP),您应该查看对循环具有特定支持的控制器:https://www.varnish-software.com/wiki/content/tutorials/varnish/multiple_varnishes.html#
3也可以完成。例如通过HTTP PURGE请求。只需确保将哪些IP列入白名单即可。 https://www.varnish-software.com/wiki/content/tutorials/varnish/vcl_examples.html#