Varnish 允许从任何 IP 清除
Varnish allow purge from any IPs
我有一个清漆缓存服务器。我想只允许三个主机可以清除一个 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。感谢任何帮助。
我找到了问题的解决方案。一个愚蠢的错误。我的清漆服务器在代理后面,所以当我使用 "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."));
现在一切正常。
我有一个清漆缓存服务器。我想只允许三个主机可以清除一个 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。感谢任何帮助。
我找到了问题的解决方案。一个愚蠢的错误。我的清漆服务器在代理后面,所以当我使用 "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."));
现在一切正常。