正则表达式问题通过 curl 向 Varnish 服务器发送 BAN 请求

标签 regex curl varnish varnish-4

我一直在尝试通过 curlVarnish 服务器发送一个 BAN 请求以获取无效的缓存内容。该 url 包含一些供 Varnish 检查的正则表达式。我已成功发送此请求:

1. curl -X BAN "https://oursite.com/product/item/(100|7|9||8|7|6|5|4|2|1)"

<!DOCTYPE html>
<html>
  <head>
    <title>200 Ban added</title>
  </head>
  <body>
    <h1>Error 200 Ban added</h1>
    <p>Ban added</p>
    <h3>Guru Meditation:</h3>
    <p>XID: 66211</p>
    <hr>
    <p>Varnish cache server</p>
  </body>
</html>

但有一个更复杂的 url

2。 curl -X BAN "https://oursite.com/product/(search/home$|item/(391|1232))"

// What I'm trying to remove are:

1./product/search/home
2./product/item/391
3./product/item/1232

默认.vcl

if (req.method == "BAN") {

        if (!client.ip ~ purge) {

            return(synth(403, "Not allowed."));
        }

        ban("req.url ~ ^"+req.url);

        return(synth(200, "Ban added"));
}

Varnish 日志:

*   << BeReq    >> 163855
-   Begin          bereq 163854 pass
-   Timestamp      Start: 1450969228.080453 0.000000 0.000000
-   BereqMethod    BAN
-   BereqURL       /product/(search/home$|item/(391|1232))
-   BereqProtocol  HTTP/1.1
-   BereqHeader    User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
-   BereqHeader    Host: oursite.com

varnishlog 所示,curl 请求已成功发出,但我不知道为什么正则表达式不起作用。没有页面被清除。 谁能告诉我有什么问题?我需要转义哪些字符?

最佳答案

正则表达式看起来不错。
我认为您应该尝试在第一个括号之后转义斜线。我假设 Varnish 将括号之间的表达式解释为正则表达式(这很好),并且在正则表达式中斜杠是定界符(某种特殊字符)。
这可能有效:

curl -X BAN "https://oursite.com/product/(search\/home$|item\/(391|1232))"

关于正则表达式问题通过 curl 向 Varnish 服务器发送 BAN 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34454307/

相关文章:

android - 在 Android 中获取 503 作为 Http 响应?

varnish - 缓存条件不适用于Wordpress cookie

javascript - 正则表达式语法错误

时间:2019-03-17 标签:c#regeximgsrc

PHP Curl TLS 用户名和密码

varnish - 如何设置具有两个后端的 Varnish ?

python - 在 python 和 mongo 中使用多个 $regex 子句创建 $elemMatch 查询

javascript - 正则表达式仅抓取日期

curl - Soundcloud:请求的 URL 响应为 HTTP 代码 0

php - CURL 结果放入 PHP 数组?