caching - Varnish :具有多个 IP 的后端(或使用其他东西)

标签 caching proxy varnish squid varnish-vcl

我正在开发一个连接到外部后端服务(从另一家公司购买)的系统,该系统将大大超出每月的请求配额。我正在尝试创建一个代理/缓存,它将缓存请求并使用缓存的响应(如果存在)。

用例:

情况1:

  • 用户请求端点
  • 代理没有缓存
  • 代理将请求转发到外部后端
  • 代理缓存响应
  • 代理将响应返回给用户

  • 情况2:
  • 用户请求端点
  • 代理已缓存
  • 代理返回缓存的响应

  • 情况3:
  • 外部后端发送webhook表示事物已更新
  • 代理清除缓存

  • 要求:
  • 代理需要能够缓存文件(主要是图像)
  • 需要访问的三个不同URL:url1.external-backend.com,url2.external-backend.com和url3.external-backend.com
  • 最好是所有三个URL的唯一一个代理:s
  • 这三个URL:s可能具有不同的路径(url1.external-backend.com/this/is/a/path),也可能具有查询(url1.external-backend.com?query=something)
  • 如果可以根据从外部后端发送的内容清除代理,那就太好了,但这不是必需的

  • 到目前为止的想法:

    到目前为止,我已经研究了两个不同的系统,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地址不会更改。

    问题:
  • 是否可以使它在Varnish中以某种方式工作?
  • 有人可以确切解释Squids配置看起来应该像上面的用例和需求一样工作吗(如果可能)?
  • 是否还有其他比Varnish或Squid更好的缓存代理服务?
  • 最佳答案

    我相信您正在寻找vmod-goto:https://docs.varnish-software.com/varnish-cache-plus/vmods/goto/

    它不是开源的,但可以完全解决您的问题。

    关于caching - Varnish :具有多个 IP 的后端(或使用其他东西),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55501208/

    相关文章:

    caching - Varnish 对分析和 Adsense 的影响

    php - 我如何让 Varnish 4 缓存所有内容而不考虑缓存控制 header 和 cookie

    caching - OpenCL 缓冲区缓存行为

    Javascript ajax 延迟加载和函数组织

    node.js - 使用 http-proxy-middleware 重写路径

    http - Indy 代理服务器 HTTPS 到 HTTP

    .net - 如何利用Redis缓存实现自动刷新

    Http 缓存 - style.css?123 或 style_123.css?

    HTTP 1.1 请求行

    cluster-computing - Varnish 3.0.3 集群上的 PURGE