gpt4 book ai didi

regex - 从 Varnish 中获取 url 值

转载 作者:行者123 更新时间:2023-12-03 17:45:58 27 4
gpt4 key购买 nike

我想从varnish的URL中剥离值,因此我可以根据URL采取不同的操作,例如:

网址:/product/123/price/available。

我想将其转换为/products?id = 123&sort = price&available = true

我还希望能够(如果可能)在请求 header 上设置值,因此我可以执行以下操作,而不是在URL上传递所有参数:

/products?id = 123&sort = price

带有标题的

  • : x-show-available-only:真

  • 我很欣赏第二个示例看起来有些奇怪,但是通过这种方式,我们可以将新参数传递回我们的旧应用程序,并确保所有新参数都不会干扰当前参数-我们只是通过 header 读取新参数,直到迁移所有参数为止。我们对新平台的功能。

    我敢肯定这是一个正则表达式,但无法解决该怎么做。

    最佳答案

    这未经测试,但应足够接近以至于您可以对其进行调整。

    根据您的网址:

    /product/123/price/available

    您需要指定两个后端(更改自己的IP):
    backend old_app {
    .host = "127.0.0.1";
    .port = "80";
    }

    backend new_app {
    .host = "127.0.0.2";
    .port = "80";
    }

    以及您的vcl_recv中的代码:
    if (req.url ~ "^/product/") {
    set req.url = regsub(req.url, "/product/([0-9]/)/([a-zA-Z])", "/products?id=\1&sort=\2");
    set req.backend = old_app;
    } else {
    set req.backend = new_app.
    }

    if (req.url ~ "/available") {
    set req.http.x-show-available-only = "true";
    }

    您可以添加更多的正则表达式规则,就像/其他块一样。

    祝你好运!

    关于regex - 从 Varnish 中获取 url 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15174886/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com