【问题标题】:Send request header from Varnish to backend server将请求标头从 Varnish 发送到后端服务器
【发布时间】:2022-01-20 08:04:58
【问题描述】:

在获取期间是否可以将一些标头从清漆端发送到后端服务器?我需要它来识别后端中的某个场景。

我应该使用哪个子程序以及如何使用?

【问题讨论】:

    标签: varnish


    【解决方案1】:

    您可以在vcl_backend_fetch 子例程中定义自定义后端请求标头。

    这是一个例子:

    vcl 4.1;
    
    backend default {
        .host = "127.0.0.1";
        .port = "80;
    }
    
    sub vcl_backend_fetch {
        set bereq.http.my-custom-header = "my-custom-value";
    }
    

    请记住,vcl_backend_fetch 是使用bereq 对象获取客户端请求信息的后端子例程。

    有关后端请求变量的更多信息,请参阅https://www.varnish-software.com/developers/tutorials/varnish-configuration-language-vcl/#backend-request-variables

    【讨论】:

    • 感谢您的回复。我已经试过了。但我的 PHP 后端无法使用 apache_request_headers() 获取此请求标头。这就是为什么我认为我可能做错了什么。同时,当我使用set req.http.X-my-custom-header = "my-custom-value";vcl_recv 中发送相同的标题时,我成功在后端获取了标题。有什么原因吗?抱歉,我不太熟悉 Varnish。
    • @PratipGhosh 我刚刚使用 Apache/PHP 设置自己对其进行了测试,apache_request_headers() 确实成功返回了 X-my-custom-header 标头。它可能与VCL无关。它要么与 Varnish 与 Apache 的连接方式有关,要么与 PHP 的配置方式有关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 2016-03-13
    相关资源
    最近更新 更多