0
我在调查是否可以使用Varnish来加速REST API。我可以使用Varnish使任意缓存条目无效吗?
基本上,我想缓存GET
需要很长时间。但是,当接收到PUT
/POST
/DELETE
请求时,我想分析该URL,并根据我找到的信息,我想清除缓存条目。
例如:
GET /documents/:docType // return document list for specified docType
DELETE /document/:docType/:docId // delete a document
GET /documents/A0 <-- cached
GET /documents/A1 <-- cached
DELETE /document/A0/333 <-- first entry is purged
我可以与VCL实现这一目标?
启用PURGE不会造成太大的伤害,因为它清除了一个单一的对象,与确切的URL匹配,并且该URL不能包含通配符(如Varnish sto使用散列标识符而不是URL本身的res对象,所以模式是没有意义的)。另一方面,BAN可能是危险的, – karatedog
是的,这就是我的意思。尽管如此,深入思考它并不是100%肯定的,也许如果你允许清除一个沉重的静态对象,你可以通过清除和重复加载来暴露DDoS攻击。 – Redithion
无论您使用哪种方法,如果在请求中启用 - 说 - PUT方法,然后是新生成的响应,则您仍然易受DDoS攻击,因为此进程无法缓存。潜在的攻击者只需要为该PUT找到适当的URL。虽然不知道应用程序的内部结构,但知道这些重物是什么并不是微不足道的。 – karatedog