如何针对Varnish级别的特定文件的所有请求返回500响应?

时间:2015-12-03 14:09:26

标签: varnish varnish-vcl

背景:

我们的网络结构将所有流量引入Varnish安装,然后根据先前管理员设置的规则将流量移植到5个不同的Web服务器之一。我对Varnish没有多少经验。

昨晚我们被特定文件的请求轰炸了。此文件是我们限制为特定服务器集的文件,并且由于原因,它直接链接到我们的主数据库。显然,这不是最佳选择,因此我们的网站受到了很大的打击。我试图做的并且失败的是在Varnish VCL中编写一个代码块,该代码块会对该文件的每个请求返回500响应,然后我可以在攻击期结束后将其注释掉。

问题:

那句法是什么?我已经完成了我的谷歌搜索,但在这一点上,我认为事实是我对Varnish不够了解能够正确地说出我的搜索,所以我找不到我需要的信息。

1 个答案:

答案 0 :(得分:4)

您可以在配置中的任何其他vcl_recv之前定义自己的vcl_recv,重新加载Varnish,然后您应该获得您正在寻找的行为。

sub vcl_recv {
    if (req.url ~ "^/path/to/file(\?.*)?$") {
        return (synth(500, "Internal Server Error"));
    }
}