Reg: backend 'name' in VCL before going to origin

Hardik hetardik.p at gmail.com
Thu May 30 17:09:49 UTC 2019


Hi Guillaume

Ok..!

Today I saw one VCL where it was resolving actual backend from director in
miss/pass function. I have not tried it.  Will let you know how it goes..

Thank you
Hardik

On Thu, 30 May 2019, 22:23 Guillaume Quintard, <
guillaume at varnish-software.com> wrote:

> Hi,
>
> Getting the resolved backend in v_b_f won't be possible until
> https://github.com/varnishcache/varnish-cache/pull/2680 gets merge. In
> the meantime (unless you write the vmod for it), there's no way to
> pre-resolve the director.
>
> --
> Guillaume Quintard
>
>
> On Wed, May 29, 2019 at 6:26 PM Hardik <hetardik.p at gmail.com> wrote:
>
>> Thanks Guillaume.
>>
>> I am already using bereq.backend in v_b_f which is giving director name.
>> As you have pointed out,  I want 'exact' backend name inside director.
>> Also before sending to origin because want to set few  headers for origin
>> as per exact backend.
>>
>> On Thu, 30 May 2019, 04:20 Guillaume Quintard, <
>> guillaume at varnish-software.com> wrote:
>>
>>> Hi,
>>>
>>> man vcl is your friend. I believe what you want is "bereq.backend"
>>>
>>> Also, you could just write: std.log("using backend: " + bereq.backend)
>>>
>>> note that bereq.backend will return the unresolved backend, meaning that
>>> if backends are inside a director, you'll get the name of the director,
>>> since the backend choice happens between v_b_f and v_b_r. To know what
>>> exact backend was used, you have to check in v_b_r.
>>>
>>> cheers,
>>> --
>>> Guillaume Quintard
>>>
>>>
>>> On Wed, May 29, 2019 at 4:56 AM Hardik <hetardik.p at gmail.com> wrote:
>>>
>>>> Hi Team,
>>>>
>>>> Requirement : *to set few headers based on backend origin ( having
>>>> multiple origins/backends in single director)*.
>>>>
>>>> I want to do similar to this.
>>>> https://stackoverflow.com/questions/43357690/varnish-vcl-how-can-i-switch-on-req-backend-hint
>>>>
>>>> sub vcl_backend_fetch {
>>>>     if (bereq.backend.name == "one") {
>>>>        std.log("one");
>>>>     } else if (bereq.backend.name == "two") {
>>>>        std.log("two");
>>>>     } else {
>>>>        std.log("neither one");
>>>>     }
>>>> }
>>>>
>>>>
>>>> I am trying to do same (inside b_fetch) but getting error that symbol
>>>> not found. I am using varnish 6.1.
>>>> Is this different function call/name for varnish 6.1 ?
>>>>
>>>> Thank you
>>>> Hardik
>>>>
>>>>
>>>> _______________________________________________
>>>> varnish-misc mailing list
>>>> varnish-misc at varnish-cache.org
>>>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20190530/3dfce25d/attachment.html>


More information about the varnish-misc mailing list