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

标签 varnish varnish-vcl

背景:

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

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

问题:

那语法是什么?我已经完成了谷歌搜索,但在这一点上,我认为这是因为我对 Varnish 的了解不够,无法正确地进行搜索,所以我没有找到我需要的信息。

最佳答案

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

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

关于varnish - 对于 Varnish 级别的特定文件的所有请求,如何返回 500 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34068160/

相关文章:

Nginx和Varnish仅提供欢迎页面

docker-compose - Varnish/ docker -组成自定义端口和缓存大小

regex - Varnish 3 没有正确解析正则表达式模式

caching - 如何检查值是否为Varnish中的数字?

Varnish 6 缺少来自不同浏览器的相同 URL 的请求

Magento 缓存 - 关于 Varnish、Redis、APC、Memcache 的困惑

magento - 当magento发回前端cookie时如何提供缓存页面

caching - 如何绕过客户端上的 Varnish 缓存?

varnish - Varnish hit-for-pass 是什么意思?

caching - 将beresp.ttl设置为0s是否会替换以前的缓存?