gpt4 book ai didi

linux - Varnish 允许从任何 IP 清除

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:27 24 4
gpt4 key购买 nike

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

    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。感谢任何帮助。

最佳答案

我找到了解决问题的方法。一个愚蠢的错误。我的 Varnish 服务器在代理后面,所以当我使用“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."));

现在一切正常。

关于linux - Varnish 允许从任何 IP 清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46775116/

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