【问题标题】:Clear varnish of specific service php特定服务php的清漆
【发布时间】:2021-08-31 02:38:26
【问题描述】:

我们已经在远程服务器上设置了清漆,并且我们的应用程序正在与其私有 IP 进行通信。 我想要做的是使用 PHP 脚本清除缓存。

所以实际上我将创建一个带有输入字段的表单,其中缓存将清除提供的 URL。

我已经尝试过使用这样的 curl 请求,但它给了我一个错误。

  $curlOptionList = [
    CURLOPT_URL => '10.1.8.4/' . 'index.php',
    CURLOPT_HTTPHEADER => $header,
    CURLOPT_CUSTOMREQUEST => 'PURGE',
    CURLOPT_VERBOSE => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_NOBODY => true,
    CURLOPT_CONNECTTIMEOUT_MS => 2000,
];
$curlHandler = curl_init();
curl_setopt_array($curlHandler, $curlOptionList);
curl_exec($curlHandler);
curl_close($curlHandler);

【问题讨论】:

  • 请避免将代码作为图片上传。 meta.stackoverflow.com/questions/285551/…
  • 你的 VCL 是什么样的?最后,您必须在 VCL 中显式返回 purge 以允许这种请求。
  • 谢谢,@gonzo,你的评论帮助我解决了我的问题。

标签: php varnish


【解决方案1】:

Varnish 可以从 VCL 中清除,但您必须明确返回(清除)才能这样做。

见:https://varnish-cache.org/docs/trunk/users-guide/purging.html#http-purging

这是从同一台机器清除的典型示例:

acl purge {
        "localhost";
}

sub vcl_recv {
        # allow PURGE from localhost    
        if (req.method == "PURGE") {
                if (!client.ip ~ purge) {
                        return(synth(405,"Not allowed."));
                }
                return (purge);
        }
}

【讨论】:

    猜你喜欢
    • 2012-10-14
    • 1970-01-01
    • 2016-09-21
    • 2012-04-03
    • 2012-06-11
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2018-11-22
    相关资源
    最近更新 更多