我正在开发一个连接到外部后端服务(从另一家公司购买)的系统,系统将超过每月的请求配额。我正在尝试创建一个代理/缓存,它将缓存请求并使用缓存的响应(如果它存在)。
用例:
情况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中的一个用来代替主机名,而且我不确定创建一个导演是正确的方法。原因是我无法控制主机名,也不能保证IP地址不会改变。
问题:
我相信你正在寻找vmod-goto:https://docs.varnish-software.com/varnish-cache-plus/vmods/goto/
它不是开源的,但它解决了你的问题。
1和2可以毫无问题地完成。对于循环基于DNS的后端(同名为每个请求提供不同的IP),您应该查看对循环有特定支持的导演:https://www.varnish-software.com/wiki/content/tutorials/varnish/multiple_varnishes.html#
也可以做到3。例如,通过HTTP PURGE请求。只需确保将白名单加入白名单即可。 https://www.varnish-software.com/wiki/content/tutorials/varnish/vcl_examples.html#