req.backend
BACKEND, can be read and set
, but not unset
.
Available inall subroutines.
The backend to use if the request is forwarded to origin.
HINT: If you want to log or otherwise report on which backend was used for a request, consider using req.backend.name
instead.
Since the type of this variable is BACKEND
, an assignment must use one of the defined backends within your Fastly service. Backends defined within the web interface are prefixed with F_
when referencing them in VCL. For example:
set req.backend = F_primary_origin;
It's possible to see all the defined backends in your service by viewing the service's generated VCL, either via the API or using the web interface.
Upon reading in a STRING
context, req.backend
is converted to a STRING
and prepended with the backend's share_key
property, which by default is your service ID, but can be changed as part of the backend definition to consolidate healthcheck traffic.
While this variable is accessible in all VCL subroutines, it is always null
in vcl_log
, and is reported inaccurately in vcl_deliver
as a side effect of internal Fastly routing. To access the value of req.backend
in vcl_deliver
or vcl_log
, copy the value into a custom HTTP header earlier in your VCL program.
Try it out
req.backend
is used in the following code examples. Examples apply VCL to real-world use cases and can be deployed as they are, or adapted for your own service. See the full list of code examples for more inspiration.
Click RUN on a sample below to provision a Fastly service, execute the code on Fastly, and see how the function behaves.
Use microservices to divide up a domain
Send request to different origin servers based on the URL path.
Smoke test a new origin
Send a copy of your traffic to a test origin before returning a response from production.
Auto retry a secondary backend
If primary backend fails, retry with a different backend without caching the failure or reducing cache efficiency.