【问题标题】:Varnish allow purge from any IPsVarnish 允许从任何 IP 清除
【发布时间】:2018-03-28 06:11:39
【问题描述】:

我有一个清漆缓存服务器。我想只允许三个主机可以清除一个 url 或域。正如官方网站所说,我使用以下清漆配置进行清除:

    backend web_servers {
        .host = "192.168.1.20";
        .port = "80";
        .probe = backend_healthcheck;
    }


    acl purge {
            "localhost";
            "192.168.1.0"/24;
            "PUBLIC_IP";            
    }    

    sub vcl_recv {

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

问题是我可以在执行以下 curl 命令时从任何 IP 地址中清除 url:

curl -X PURGE "domain_name.com"

我只希望清除部分中列出的 IP 可以从管理端口 6082 清除 url,而不是从端口 80 清除任何其他 IP。感谢任何帮助。

【问题讨论】:

    标签: linux caching varnish purge


    【解决方案1】:

    我找到了解决问题的方法。一个愚蠢的错误。我的清漆服务器位于代理后面,所以当我使用“client.ip”检查允许的 IP 地址时,所有 IP 都是 127.0.0.1。我删除了 ACL 清除并替换了以下几行:

    if (!client.ip ~ purge)
    {
        return(synth(405,"Not allowed."));
    }
    return (purge);
    

    这些:

    if (req.http.X-Forwarded-For == "PUBLIC_IP, 127.0.0.1" || req.http.X-Forwarded-For == "192.168.1.2, 127.0.0.1")
    {
        return (purge);
    }
    return(synth(405,"Not allowed."));
    

    现在一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 2016-06-05
      相关资源
      最近更新 更多