Sin*_*nai 0 linux caching varnish purge
我有一个清漆缓存服务器。我想只允许三个主机可以清除一个 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
}
Run Code Online (Sandbox Code Playgroud)
问题是我可以在执行以下 curl 命令时从任何 IP 地址清除 url:
curl -X PURGE "domain_name.com"
Run Code Online (Sandbox Code Playgroud)
我只希望清除部分中列出的 IP 可以从管理端口 6082 清除 url,而不是来自端口 80 的任何其他 IP。感谢任何帮助。
我找到了我的问题的解决方案。一个愚蠢的错误。我的清漆服务器在代理后面,所以当我使用“client.ip”检查允许的 IP 地址时,所有 IP 都是 127.0.0.1。我删除了 ACL purge 并替换了以下几行:
if (!client.ip ~ purge)
{
return(synth(405,"Not allowed."));
}
return (purge);
Run Code Online (Sandbox Code Playgroud)
与这些:
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."));
Run Code Online (Sandbox Code Playgroud)
现在一切正常。
| 归档时间: |
|
| 查看次数: |
1165 次 |
| 最近记录: |