gpt4 book ai didi

apache - Varnish HTTP 503 - 后端生病 - apache 静态文件未缓存

转载 作者:行者123 更新时间:2023-12-03 17:46:16 25 4
gpt4 key购买 nike

我们将 Varnish 配置如下:

  • 我们使用apache主机和端口进行了探针验证,但是使用了到后端的上下文(应用程序服务器/mod jk)。
  • 我们没有使用集群和负载平衡配置。

  • 后端默认{
    .host =“127.0.0.1”;
    .port =“80”;
    .max_connections = 300;

    .probe = {
    .url =“/webapp-context/healthcheck”;
    .interval = 60秒;
    .timeout = 20秒;
    .window = 5;
    .threshold = 3;
    }

    .first_byte_timeout = 5秒;
    .connect_timeout = 5秒;
    .between_bytes_timeout = 1s;
    }

  • 我们仅针对特定上下文提供了 Varnish 缓存
  • 我们没有静态文件(www.domain.com/staticfiles/*)的 Varnish 缓存,因为所有静态文件都位于DocumentRoot(Apache)上。

  • 子vcl_recv {

    //不缓存静态文件
    如果(req.url〜“^(/staticfiles)”){
    返回(通过);
    }

    //创建缓存
    如果(req.url〜“^(/content/)”){
    未设置要求http.Cookie;
    返回(哈希);
    }

    ...
    ...
    }

    因此,我的问题是:我们已配置 Varnish 对静态文件上下文进行“传递”。现在,当我们的后端在进行探针验证后生病了时,所有staticfiles上下文都收到HTTP 503错误,但是html页面在Varnish缓存上仍然可以使用,但没有staticfiles。

    有什么方法可以配置Varnish来保持从Apache提供的所有静态文件,即使应用程序服务器已关闭?

    最佳答案

    您可以设置不指定运行状况检查的其他后端定义。因此,您的VCL将包含以下内容:

    backend static {
    .host = "127.0.0.1";
    .port = "80";
    .max_connections = 300;
    }

    # .. your default backend with probe here

    sub vcl_recv {
    # ...
    // do not cache static files
    if ( req.url ~ "^(/staticfiles)" ) {
    set req.backend_hint = static;
    return(pass);
    }
    # ,,,
    }

    关于apache - Varnish HTTP 503 - 后端生病 - apache 静态文件未缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45304844/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com