【问题标题】:varnish caching external content requested by backend url清漆缓存后端 url 请求的外部内容
【发布时间】:2021-05-09 06:33:11
【问题描述】:

我是清漆新手。我想为清漆缓存中的所有请求提供服务。我的后端从 CDN 和其他位置询问内容。喜欢

我的清漆是 example.com 后端 IP 123.123.123.123 带有链接的后端 url 请求 abc.jpg http://web.example.com/api/abc.jpg 和 一些 CDN 内容,例如 https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js

通常它们不会被缓存。从其原始位置直接提供给客户端浏览器。 如何使用 varnish 缓存所有这些并设置缓存生命周期?

提前致谢

【问题讨论】:

    标签: caching reverse-proxy varnish


    【解决方案1】:

    清漆缓存使用静态后端。您可以为所需的每个外部资源(web.example.com、cdnjs.cloudflare.com、...)明确定义后端。这必须提前完成,不能即时完成。

    然而,Varnish Enterprise,Varnish 的商业版本提供了一个支持动态后端的模块。请参阅https://docs.varnish-software.com/varnish-cache-plus/vmods/goto/ 了解更多信息。

    【讨论】:

    • 我已经定义了 2 个后端来实现这一点。像后端 web { .host = "web.example.com"; .port = "80"; .max_connections = 100; .first_byte_timeout = 6s; .connect_timeout = 20s; } 并在 vcl_rcv{ if (req.url ~ "^/api/") { set req.backend_hint = web; } 其他 { 设置 req.backend_hint = 默认; } 但没有请求通过 web.example.com 的清漆
    • @MuhammadSaifulAmin web.example.com 并不真正作为主机名存在,它不会解析为 IP 地址。它可能在某些示例代码中用作样板 URL。它应该替换为存在的实际主机名。
    • 我设置了一个实际的域而不是web.example.com,这里我只是以它为例。
    • @MuhammadSaifulAmin 在这种情况下,请为失败的请求运行varnishlog -g request。如果您在解释输出时遇到困难,请将日志输出添加到您的原始问题中,我会为您提供帮助。可能会告诉它为什么无法连接。
    猜你喜欢
    • 2012-02-19
    • 1970-01-01
    • 2012-12-22
    • 2016-02-12
    • 2018-07-18
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2017-10-20
    相关资源
    最近更新 更多