Mailing List Archive

Reg: backend 'name' in VCL before going to origin
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
Re: Reg: backend 'name' in VCL before going to origin [ In reply to ]
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@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@varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>
Re: Reg: backend 'name' in VCL before going to origin [ In reply to ]
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@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@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@varnish-cache.org
>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>>
>
Re: Reg: backend 'name' in VCL before going to origin [ In reply to ]
Adding one more point. This directory case is regarding fallback and
nearest algorithms.

Thanks in advance for hint.

On Thu, 30 May 2019 at 06:55, Hardik <hetardik.p@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@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@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@varnish-cache.org
>>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>>>
>>
Re: Reg: backend 'name' in VCL before going to origin [ In reply to ]
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@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@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@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@varnish-cache.org
>>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>>>
>>
Re: Reg: backend 'name' in VCL before going to origin [ In reply to ]
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@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@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@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@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@varnish-cache.org
>>>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>>>>
>>>
Re: Reg: backend 'name' in VCL before going to origin [ In reply to ]
Why not share it? I might be missing something.
--
Guillaume Quintard


On Thu, May 30, 2019 at 10:10 AM Hardik <hetardik.p@gmail.com> wrote:

> 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@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@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@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@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@varnish-cache.org
>>>>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>>>>>
>>>>
Re: Reg: backend 'name' in VCL before going to origin [ In reply to ]
Hi Guillaume,

There shard algorithm is used for director. That's why it is working. I
tried same and able to get exact backend name in v_b_f.
new di_utc_0 = directors.shard();
di_utc_0.add_backend(be_utc_16);
di_utc_0.reconfigure();

But I can not use shard algorithm as requirement is to use fallback/nearest.

I understood your point that currently no function call available which can
provide exact backend.
Still if any work around for this then please let me know. It is really
required.

Thank you
Hardik


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

> Why not share it? I might be missing something.
> --
> Guillaume Quintard
>
>
> On Thu, May 30, 2019 at 10:10 AM Hardik <hetardik.p@gmail.com> wrote:
>
>> 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@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@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@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@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@varnish-cache.org
>>>>>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>>>>>>
>>>>>