【发布时间】:2022-01-20 08:04:58
【问题描述】:
在获取期间是否可以将一些标头从清漆端发送到后端服务器?我需要它来识别后端中的某个场景。
我应该使用哪个子程序以及如何使用?
【问题讨论】:
标签: varnish
在获取期间是否可以将一些标头从清漆端发送到后端服务器?我需要它来识别后端中的某个场景。
我应该使用哪个子程序以及如何使用?
【问题讨论】:
标签: varnish
您可以在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。
【讨论】:
apache_request_headers() 获取此请求标头。这就是为什么我认为我可能做错了什么。同时,当我使用set req.http.X-my-custom-header = "my-custom-value"; 在vcl_recv 中发送相同的标题时,我成功在后端获取了标题。有什么原因吗?抱歉,我不太熟悉 Varnish。
apache_request_headers() 确实成功返回了 X-my-custom-header 标头。它可能与VCL无关。它要么与 Varnish 与 Apache 的连接方式有关,要么与 PHP 的配置方式有关。