我有一个网站上的Firebase托管,使用静态html,没有服务器端的功能是用来交付的结果。
运行curl -X PURGE https://mywebsite.com -v -L
时,结果为:
{ "status": "ok", "id": "20755-1619059392-3560756" }
我需要一种方法来限制此操作到特定的IP,这样就没有人可以重置我的缓存,这可能会导致额外的成本。
此外,Firebase似乎使用Varnish来管理缓存(这是一个空的东西)。
我客户的安全顾问向我们发送了关于如何处理此问题的建议,我不确定这是否是.htaccess语法或其他内容:
# Varnish recommends to using PURGE method only by valid user,
# for example by ip limiting and for other return 405 Not allowed:
acl purge {
"localhost";
"192.168.55.0"/24;
}
sub vcl_recv {
# allow PURGE from localhost and 192.168.55...
if (req.method == "PURGE") {
if (!client.ip ~ purge) {
return(synth(405,"Not allowed."));
}
return (purge);
}
}
我不知道如何在Firebase Hosting中应用这个,我也没有使用服务器函数,只是使用了带有以下头文件的常规firebase.json
:
"headers": [
{
"source": "*.[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].+(css|js)",
"headers": [
{
"key": "Cache-Control",
"value": "public,max-age=31536000,immutable"
}
]
},
{
"source": "**/*.@(json|eot|otf|ttf|ttc|woff|font.css)",
"headers": [
{
"key": "Access-Control-Allow-Origin",
"value": "*"
}
]
}
]
2条答案
按热度按时间lb3vh1jj1#
以下代码为 *VCL代码 *:
这段代码允许你扩展Varnish的行为。这段代码必须被添加到你的
/etc/varnish/default.vcl
文件中。将此代码添加到VCL文件后,必须重新加载
varnishd
进程以激活此VCL配置。如果无法重新加载
varnishd
,也可以使用以下命令激活新的VCL文件:有关 Varnish 和 VCL 编程语言的更多信息,请查看http://varnish-cache.org/docs/6.0/reference/index.html
ejk8hzay2#
暂时没有办法,这是我从火力支援那里得到的回答:
嗨达米安,
我叫谢尔盖,谢谢你来找我。我会协助你的。
这里要解决的第一件事是,Varnish服务超出了我们的范围,因此我们关于它在我们的托管服务中的实现的信息并不是最丰富的。
不幸的是,现在我们只能用现有的工具来控制缓存行为。
很抱歉,我们目前无法提供您所需的功能,如果您愿意,我们可以提交功能请求,以便我们的工程团队能够看到。