Mailing List Archive

vmod_header can be used in vcl_backend_fetch?
I would like to control bereq header below.(varnish4.1.8)

header.append(bereq.http.Accept-Encoding, "aaa");
header.append(bereq.http.Accept-Encoding, "bbb");

But bereq.http.Accept-Encoding header is "aaa". (not "aaa,bbb")
is it possible to handle the bereq using vmod_header ?

or is it varnish-modules bug?

Best regards.
_______________________________________________
varnish-misc mailing list
varnish-misc@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
Re: vmod_header can be used in vcl_backend_fetch? [ In reply to ]
Hi,

I would expect to have two AE headers, one with aaa and one with bbb, would
you have the varnishlog of that particular bereq?

Also, it's probably out of scope, but are you actually changing the
Accept-Encoding header, or is that just for the example?

--
Guillaume Quintard

On Mon, Nov 27, 2017 at 12:15 PM, matrix <matrix@matrix2000.name> wrote:

> I would like to control bereq header below.(varnish4.1.8)
>
> header.append(bereq.http.Accept-Encoding, "aaa");
> header.append(bereq.http.Accept-Encoding, "bbb");
>
> But bereq.http.Accept-Encoding header is "aaa". (not "aaa,bbb")
> is it possible to handle the bereq using vmod_header ?
>
> or is it varnish-modules bug?
>
> Best regards.
> _______________________________________________
> varnish-misc mailing list
> varnish-misc@varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>
Re: vmod_header can be used in vcl_backend_fetch? [ In reply to ]
hi thank you for your reply

According to varnishlog Bereq header are displayed but origin server
log, only Accept-Encoding: aaaa .

- BereqHeader Accept-Encoding: aaaa
- BereqHeader Accept-Encoding: bbbb

I would like to change Accept-Encoding Header to br,gzip, because the
varnish is force replaced Accept-Encoding gzip when backend request.

VCL
unset bereq.http.Accept-Encoding;
header.append(bereq.http.Accept-Encoding, "aaaa");
header.append(bereq.http.Accept-Encoding, "bbbb");


Full varnishlog below

* << BeReq >> 3
- Begin bereq 2 fetch
- Timestamp Start: 1511783436.988432 0.000000 0.000000
- BereqMethod GET
- BereqURL /cache/200.php
- BereqProtocol HTTP/1.1
- BereqHeader User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
- BereqHeader Accept: */*
- BereqHeader host: test.com
- BereqHeader Accept-Encoding: gzip
- BereqHeader Surrogate-Capability: key=ESI/1.0
- BereqHeader X-Cache-Key: /cache/200.php
- BereqHeader X-Varnish: 3
- VCL_call BACKEND_FETCH
- BereqUnset Accept-Encoding: gzip
- BereqHeader Accept-Encoding: aaaa
- BereqHeader Accept-Encoding: bbbb
- VCL_return fetch
- BackendOpen 21 boot.backend1 127.0.0.1 81 127.0.0.1 51782
- BackendStart 127.0.0.1 81
- Timestamp Bereq: 1511783436.988549 0.000118 0.000118
- Timestamp Beresp: 1511783437.198227 0.209795 0.209677
- BerespProtocol HTTP/1.1
- BerespStatus 404
- BerespReason Not Found
- BerespHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
- BerespHeader Content-Type: text/html; charset=UTF-8
- BerespHeader Transfer-Encoding: chunked
- BerespHeader Connection: keep-alive
- BerespHeader Vary: Accept-Encoding
- TTL RFC 86400 10 -1 1511783437 1511783437 1511783437 0 0
- VCL_call BACKEND_RESPONSE
- TTL VCL 300 10 0 1511783437
- VCL_return deliver
- Storage file disk
- ObjProtocol HTTP/1.1
- ObjStatus 404
- ObjReason Not Found
- ObjHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
- ObjHeader Content-Type: text/html; charset=UTF-8
- ObjHeader Vary: Accept-Encoding
- Fetch_Body 2 chunked stream
- BackendReuse 21 boot.backend1
- Timestamp BerespBody: 1511783437.198340 0.209908 0.000113
- Length 16
- BereqAcct 569 0 569 178 16 194
- End

* << Request >> 2
- Begin req 1 rxreq
- Timestamp Start: 1511783436.988227 0.000000 0.000000
- Timestamp Req: 1511783436.988227 0.000000 0.000000
- ReqStart x.x.x.x 62656
- ReqMethod GET
- ReqURL /cache/200.php?1234
- ReqProtocol HTTP/1.1
- ReqHeader User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
- ReqHeader Accept: */*
- ReqHeader Host:test.com
- ReqHeader Accept-Encoding: gzip,deflate
- VCL_call RECV
- ReqUnset Host:test.com
- ReqHeader host: test.com
- ReqUnset Accept-Encoding: gzip,deflate
- ReqHeader Accept-Encoding: gzip
- ReqHeader Surrogate-Capability: key=ESI/1.0
- ReqURL /cache/200.php
- VCL_return hash
- VCL_call HASH
- ReqHeader X-Cache-Key: /cache/200.php
- VCL_Log redhash
- ReqUnset X-Cache-Key: /cache/200.php
- ReqHeader X-Cache-Key: /cache/200.php
- VCL_return lookup
- VCL_call MISS
- VCL_Log redmiss
- VCL_return fetch
- Link bereq 3 fetch
- Timestamp Fetch: 1511783437.198397 0.210170 0.210170
- RespProtocol HTTP/1.1
- RespStatus 404
- RespReason Not Found
- RespHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
- RespHeader Content-Type: text/html; charset=UTF-8
- RespHeader Vary: Accept-Encoding
- RespHeader X-Varnish: 2
- RespHeader Age: 0
- RespHeader Via: 1.1 varnish-v4
- VCL_call DELIVER
- VCL_Log reddeliver
- RespUnset X-Varnish: 2
- RespUnset Via: 1.1 varnish-v4
- VCL_return deliver
- Timestamp Process: 1511783437.198471 0.210244 0.000074
- RespHeader Content-Length: 16
- Debug "RES_MODE 2"
- RespHeader Connection: keep-alive
- Timestamp Resp: 1511783437.198515 0.210288 0.000044
- ReqAcct 219 0 219 282 16 298
- End

* << Session >> 1
- Begin sess 0 HTTP/1
- SessOpen x.x.x.x 62656 0.0.0.0:80 172.26.12.250 80
1511783436.987762 20
- Link req 2 rxreq
- SessClose REM_CLOSE 0.217
- End


2017-11-27 20:21 GMT+09:00 Guillaume Quintard <guillaume@varnish-software.com>:
> Hi,
>
> I would expect to have two AE headers, one with aaa and one with bbb, would
> you have the varnishlog of that particular bereq?
>
> Also, it's probably out of scope, but are you actually changing the
> Accept-Encoding header, or is that just for the example?
>
> --
> Guillaume Quintard
>
> On Mon, Nov 27, 2017 at 12:15 PM, matrix <matrix@matrix2000.name> wrote:
>>
>> I would like to control bereq header below.(varnish4.1.8)
>>
>> header.append(bereq.http.Accept-Encoding, "aaa");
>> header.append(bereq.http.Accept-Encoding, "bbb");
>>
>> But bereq.http.Accept-Encoding header is "aaa". (not "aaa,bbb")
>> is it possible to handle the bereq using vmod_header ?
>>
>> or is it varnish-modules bug?
>>
>> Best regards.
>> _______________________________________________
>> varnish-misc mailing list
>> varnish-misc@varnish-cache.org
>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>
>
_______________________________________________
varnish-misc mailing list
varnish-misc@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
Re: vmod_header can be used in vcl_backend_fetch? [ In reply to ]
On 11/27/2017 01:04 PM, matrix wrote:
>
> According to varnishlog Bereq header are displayed but origin server
> log, only Accept-Encoding: aaaa .
>
> - BereqHeader Accept-Encoding: aaaa
> - BereqHeader Accept-Encoding: bbbb
>
> I would like to change Accept-Encoding Header to br,gzip, because the
> varnish is force replaced Accept-Encoding gzip when backend request.
>
> VCL
> unset bereq.http.Accept-Encoding;
> header.append(bereq.http.Accept-Encoding, "aaaa");
> header.append(bereq.http.Accept-Encoding, "bbbb");

After the header.append()s you can use:

std.collect(bereq.http.Accept-Encoding)

... to combine them into a single header with comma-separated values.

https://varnish-cache.org/docs/5.2/reference/vmod_std.generated.html#func-collect

Best,
Geoff
--
** * * UPLEX - Nils Goroll Systemoptimierung

Scheffelstraße 32
22301 Hamburg

Tel +49 40 2880 5731
Mob +49 176 636 90917
Fax +49 40 42949753

http://uplex.de
Re: vmod_header can be used in vcl_backend_fetch? [ In reply to ]
So the varnishlog confirms the vmods works as expected:

- BereqUnset Accept-Encoding: gzip
- BereqHeader Accept-Encoding: aaaa
- BereqHeader Accept-Encoding: bbbb

bereq is "BackEnd REQuest", if you want to change the "BackEnd RESPonse",
use beresp.http.*.

And you can simply to:

set bereq.http.accept-encoding = "br, gzip";

Just know that while varnish natively support gzip, it's not the case for
brotli. You can have a look at this blog post:
https://info.varnish-software.com/blog/varnish-cache-brotli-compression

--
Guillaume Quintard

On Mon, Nov 27, 2017 at 1:04 PM, matrix <matrix@matrix2000.name> wrote:

> hi thank you for your reply
>
> According to varnishlog Bereq header are displayed but origin server
> log, only Accept-Encoding: aaaa .
>
> - BereqHeader Accept-Encoding: aaaa
> - BereqHeader Accept-Encoding: bbbb
>
> I would like to change Accept-Encoding Header to br,gzip, because the
> varnish is force replaced Accept-Encoding gzip when backend request.
>
> VCL
> unset bereq.http.Accept-Encoding;
> header.append(bereq.http.Accept-Encoding, "aaaa");
> header.append(bereq.http.Accept-Encoding, "bbbb");
>
>
> Full varnishlog below
>
> * << BeReq >> 3
> - Begin bereq 2 fetch
> - Timestamp Start: 1511783436.988432 0.000000 0.000000
> - BereqMethod GET
> - BereqURL /cache/200.php
> - BereqProtocol HTTP/1.1
> - BereqHeader User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
> libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> - BereqHeader Accept: */*
> - BereqHeader host: test.com
> - BereqHeader Accept-Encoding: gzip
> - BereqHeader Surrogate-Capability: key=ESI/1.0
> - BereqHeader X-Cache-Key: /cache/200.php
> - BereqHeader X-Varnish: 3
> - VCL_call BACKEND_FETCH
> - BereqUnset Accept-Encoding: gzip
> - BereqHeader Accept-Encoding: aaaa
> - BereqHeader Accept-Encoding: bbbb
> - VCL_return fetch
> - BackendOpen 21 boot.backend1 127.0.0.1 81 127.0.0.1 51782
> - BackendStart 127.0.0.1 81
> - Timestamp Bereq: 1511783436.988549 0.000118 0.000118
> - Timestamp Beresp: 1511783437.198227 0.209795 0.209677
> - BerespProtocol HTTP/1.1
> - BerespStatus 404
> - BerespReason Not Found
> - BerespHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
> - BerespHeader Content-Type: text/html; charset=UTF-8
> - BerespHeader Transfer-Encoding: chunked
> - BerespHeader Connection: keep-alive
> - BerespHeader Vary: Accept-Encoding
> - TTL RFC 86400 10 -1 1511783437 1511783437 1511783437 0 0
> - VCL_call BACKEND_RESPONSE
> - TTL VCL 300 10 0 1511783437
> - VCL_return deliver
> - Storage file disk
> - ObjProtocol HTTP/1.1
> - ObjStatus 404
> - ObjReason Not Found
> - ObjHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
> - ObjHeader Content-Type: text/html; charset=UTF-8
> - ObjHeader Vary: Accept-Encoding
> - Fetch_Body 2 chunked stream
> - BackendReuse 21 boot.backend1
> - Timestamp BerespBody: 1511783437.198340 0.209908 0.000113
> - Length 16
> - BereqAcct 569 0 569 178 16 194
> - End
>
> * << Request >> 2
> - Begin req 1 rxreq
> - Timestamp Start: 1511783436.988227 0.000000 0.000000
> - Timestamp Req: 1511783436.988227 0.000000 0.000000
> - ReqStart x.x.x.x 62656
> - ReqMethod GET
> - ReqURL /cache/200.php?1234
> - ReqProtocol HTTP/1.1
> - ReqHeader User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
> libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> - ReqHeader Accept: */*
> - ReqHeader Host:test.com
> - ReqHeader Accept-Encoding: gzip,deflate
> - VCL_call RECV
> - ReqUnset Host:test.com
> - ReqHeader host: test.com
> - ReqUnset Accept-Encoding: gzip,deflate
> - ReqHeader Accept-Encoding: gzip
> - ReqHeader Surrogate-Capability: key=ESI/1.0
> - ReqURL /cache/200.php
> - VCL_return hash
> - VCL_call HASH
> - ReqHeader X-Cache-Key: /cache/200.php
> - VCL_Log redhash
> - ReqUnset X-Cache-Key: /cache/200.php
> - ReqHeader X-Cache-Key: /cache/200.php
> - VCL_return lookup
> - VCL_call MISS
> - VCL_Log redmiss
> - VCL_return fetch
> - Link bereq 3 fetch
> - Timestamp Fetch: 1511783437.198397 0.210170 0.210170
> - RespProtocol HTTP/1.1
> - RespStatus 404
> - RespReason Not Found
> - RespHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
> - RespHeader Content-Type: text/html; charset=UTF-8
> - RespHeader Vary: Accept-Encoding
> - RespHeader X-Varnish: 2
> - RespHeader Age: 0
> - RespHeader Via: 1.1 varnish-v4
> - VCL_call DELIVER
> - VCL_Log reddeliver
> - RespUnset X-Varnish: 2
> - RespUnset Via: 1.1 varnish-v4
> - VCL_return deliver
> - Timestamp Process: 1511783437.198471 0.210244 0.000074
> - RespHeader Content-Length: 16
> - Debug "RES_MODE 2"
> - RespHeader Connection: keep-alive
> - Timestamp Resp: 1511783437.198515 0.210288 0.000044
> - ReqAcct 219 0 219 282 16 298
> - End
>
> * << Session >> 1
> - Begin sess 0 HTTP/1
> - SessOpen x.x.x.x 62656 0.0.0.0:80 172.26.12.250 80
> 1511783436.987762 20
> - Link req 2 rxreq
> - SessClose REM_CLOSE 0.217
> - End
>
>
> 2017-11-27 20:21 GMT+09:00 Guillaume Quintard <guillaume@varnish-software.
> com>:
> > Hi,
> >
> > I would expect to have two AE headers, one with aaa and one with bbb,
> would
> > you have the varnishlog of that particular bereq?
> >
> > Also, it's probably out of scope, but are you actually changing the
> > Accept-Encoding header, or is that just for the example?
> >
> > --
> > Guillaume Quintard
> >
> > On Mon, Nov 27, 2017 at 12:15 PM, matrix <matrix@matrix2000.name> wrote:
> >>
> >> I would like to control bereq header below.(varnish4.1.8)
> >>
> >> header.append(bereq.http.Accept-Encoding, "aaa");
> >> header.append(bereq.http.Accept-Encoding, "bbb");
> >>
> >> But bereq.http.Accept-Encoding header is "aaa". (not "aaa,bbb")
> >> is it possible to handle the bereq using vmod_header ?
> >>
> >> or is it varnish-modules bug?
> >>
> >> Best regards.
> >> _______________________________________________
> >> varnish-misc mailing list
> >> varnish-misc@varnish-cache.org
> >> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
> >
> >
>
Re: vmod_header can be used in vcl_backend_fetch? [ In reply to ]
thank you for checking.

I would like to make it clear about vmod header action.
Does ‘header append’ mean to append value of each header? or to append
the entire header ?

I complete thought that handled value of existing header below.

header.append(bereq.http.Accept-Encoding, "aaaa");

Vary:http.Accept-Encoding"aaaa"

header.append(bereq.http.Accept-Encoding, "bbbb");

Vary:http.Accept-Encoding"aaaa,bbbb"

*thank you for information about br. I already check!



2017-11-27 21:23 GMT+09:00 Guillaume Quintard <guillaume@varnish-software.com>:
> So the varnishlog confirms the vmods works as expected:
>
> - BereqUnset Accept-Encoding: gzip
> - BereqHeader Accept-Encoding: aaaa
> - BereqHeader Accept-Encoding: bbbb
>
> bereq is "BackEnd REQuest", if you want to change the "BackEnd RESPonse",
> use beresp.http.*.
>
> And you can simply to:
>
> set bereq.http.accept-encoding = "br, gzip";
>
> Just know that while varnish natively support gzip, it's not the case for
> brotli. You can have a look at this blog post:
> https://info.varnish-software.com/blog/varnish-cache-brotli-compression
>
> --
> Guillaume Quintard
>
> On Mon, Nov 27, 2017 at 1:04 PM, matrix <matrix@matrix2000.name> wrote:
>>
>> hi thank you for your reply
>>
>> According to varnishlog Bereq header are displayed but origin server
>> log, only Accept-Encoding: aaaa .
>>
>> - BereqHeader Accept-Encoding: aaaa
>> - BereqHeader Accept-Encoding: bbbb
>>
>> I would like to change Accept-Encoding Header to br,gzip, because the
>> varnish is force replaced Accept-Encoding gzip when backend request.
>>
>> VCL
>> unset bereq.http.Accept-Encoding;
>> header.append(bereq.http.Accept-Encoding, "aaaa");
>> header.append(bereq.http.Accept-Encoding, "bbbb");
>>
>>
>> Full varnishlog below
>>
>> * << BeReq >> 3
>> - Begin bereq 2 fetch
>> - Timestamp Start: 1511783436.988432 0.000000 0.000000
>> - BereqMethod GET
>> - BereqURL /cache/200.php
>> - BereqProtocol HTTP/1.1
>> - BereqHeader User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
>> libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
>> - BereqHeader Accept: */*
>> - BereqHeader host: test.com
>> - BereqHeader Accept-Encoding: gzip
>> - BereqHeader Surrogate-Capability: key=ESI/1.0
>> - BereqHeader X-Cache-Key: /cache/200.php
>> - BereqHeader X-Varnish: 3
>> - VCL_call BACKEND_FETCH
>> - BereqUnset Accept-Encoding: gzip
>> - BereqHeader Accept-Encoding: aaaa
>> - BereqHeader Accept-Encoding: bbbb
>> - VCL_return fetch
>> - BackendOpen 21 boot.backend1 127.0.0.1 81 127.0.0.1 51782
>> - BackendStart 127.0.0.1 81
>> - Timestamp Bereq: 1511783436.988549 0.000118 0.000118
>> - Timestamp Beresp: 1511783437.198227 0.209795 0.209677
>> - BerespProtocol HTTP/1.1
>> - BerespStatus 404
>> - BerespReason Not Found
>> - BerespHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
>> - BerespHeader Content-Type: text/html; charset=UTF-8
>> - BerespHeader Transfer-Encoding: chunked
>> - BerespHeader Connection: keep-alive
>> - BerespHeader Vary: Accept-Encoding
>> - TTL RFC 86400 10 -1 1511783437 1511783437 1511783437 0 0
>> - VCL_call BACKEND_RESPONSE
>> - TTL VCL 300 10 0 1511783437
>> - VCL_return deliver
>> - Storage file disk
>> - ObjProtocol HTTP/1.1
>> - ObjStatus 404
>> - ObjReason Not Found
>> - ObjHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
>> - ObjHeader Content-Type: text/html; charset=UTF-8
>> - ObjHeader Vary: Accept-Encoding
>> - Fetch_Body 2 chunked stream
>> - BackendReuse 21 boot.backend1
>> - Timestamp BerespBody: 1511783437.198340 0.209908 0.000113
>> - Length 16
>> - BereqAcct 569 0 569 178 16 194
>> - End
>>
>> * << Request >> 2
>> - Begin req 1 rxreq
>> - Timestamp Start: 1511783436.988227 0.000000 0.000000
>> - Timestamp Req: 1511783436.988227 0.000000 0.000000
>> - ReqStart x.x.x.x 62656
>> - ReqMethod GET
>> - ReqURL /cache/200.php?1234
>> - ReqProtocol HTTP/1.1
>> - ReqHeader User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
>> libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
>> - ReqHeader Accept: */*
>> - ReqHeader Host:test.com
>> - ReqHeader Accept-Encoding: gzip,deflate
>> - VCL_call RECV
>> - ReqUnset Host:test.com
>> - ReqHeader host: test.com
>> - ReqUnset Accept-Encoding: gzip,deflate
>> - ReqHeader Accept-Encoding: gzip
>> - ReqHeader Surrogate-Capability: key=ESI/1.0
>> - ReqURL /cache/200.php
>> - VCL_return hash
>> - VCL_call HASH
>> - ReqHeader X-Cache-Key: /cache/200.php
>> - VCL_Log redhash
>> - ReqUnset X-Cache-Key: /cache/200.php
>> - ReqHeader X-Cache-Key: /cache/200.php
>> - VCL_return lookup
>> - VCL_call MISS
>> - VCL_Log redmiss
>> - VCL_return fetch
>> - Link bereq 3 fetch
>> - Timestamp Fetch: 1511783437.198397 0.210170 0.210170
>> - RespProtocol HTTP/1.1
>> - RespStatus 404
>> - RespReason Not Found
>> - RespHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
>> - RespHeader Content-Type: text/html; charset=UTF-8
>> - RespHeader Vary: Accept-Encoding
>> - RespHeader X-Varnish: 2
>> - RespHeader Age: 0
>> - RespHeader Via: 1.1 varnish-v4
>> - VCL_call DELIVER
>> - VCL_Log reddeliver
>> - RespUnset X-Varnish: 2
>> - RespUnset Via: 1.1 varnish-v4
>> - VCL_return deliver
>> - Timestamp Process: 1511783437.198471 0.210244 0.000074
>> - RespHeader Content-Length: 16
>> - Debug "RES_MODE 2"
>> - RespHeader Connection: keep-alive
>> - Timestamp Resp: 1511783437.198515 0.210288 0.000044
>> - ReqAcct 219 0 219 282 16 298
>> - End
>>
>> * << Session >> 1
>> - Begin sess 0 HTTP/1
>> - SessOpen x.x.x.x 62656 0.0.0.0:80 172.26.12.250 80
>> 1511783436.987762 20
>> - Link req 2 rxreq
>> - SessClose REM_CLOSE 0.217
>> - End
>>
>>
>> 2017-11-27 20:21 GMT+09:00 Guillaume Quintard
>> <guillaume@varnish-software.com>:
>> > Hi,
>> >
>> > I would expect to have two AE headers, one with aaa and one with bbb,
>> > would
>> > you have the varnishlog of that particular bereq?
>> >
>> > Also, it's probably out of scope, but are you actually changing the
>> > Accept-Encoding header, or is that just for the example?
>> >
>> > --
>> > Guillaume Quintard
>> >
>> > On Mon, Nov 27, 2017 at 12:15 PM, matrix <matrix@matrix2000.name> wrote:
>> >>
>> >> I would like to control bereq header below.(varnish4.1.8)
>> >>
>> >> header.append(bereq.http.Accept-Encoding, "aaa");
>> >> header.append(bereq.http.Accept-Encoding, "bbb");
>> >>
>> >> But bereq.http.Accept-Encoding header is "aaa". (not "aaa,bbb")
>> >> is it possible to handle the bereq using vmod_header ?
>> >>
>> >> or is it varnish-modules bug?
>> >>
>> >> Best regards.
>> >> _______________________________________________
>> >> varnish-misc mailing list
>> >> varnish-misc@varnish-cache.org
>> >> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>> >
>> >
>
>
_______________________________________________
varnish-misc mailing list
varnish-misc@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
Re: vmod_header can be used in vcl_backend_fetch? [ In reply to ]
No:
https://github.com/varnish/varnish-modules/blob/master/src/vmod_header.vcc#L35

Check ``man vmod_headers`` for more info.

--
Guillaume Quintard

On Tue, Nov 28, 2017 at 8:03 AM, matrix <matrix@matrix2000.name> wrote:

> thank you for checking.
>
> I would like to make it clear about vmod header action.
> Does ‘header append’ mean to append value of each header? or to append
> the entire header ?
>
> I complete thought that handled value of existing header below.
>
> header.append(bereq.http.Accept-Encoding, "aaaa");
>
> Vary:http.Accept-Encoding"aaaa"
>
> header.append(bereq.http.Accept-Encoding, "bbbb");
>
> Vary:http.Accept-Encoding"aaaa,bbbb"
>
> *thank you for information about br. I already check!
>
>
>
> 2017-11-27 21:23 GMT+09:00 Guillaume Quintard <guillaume@varnish-software.
> com>:
> > So the varnishlog confirms the vmods works as expected:
> >
> > - BereqUnset Accept-Encoding: gzip
> > - BereqHeader Accept-Encoding: aaaa
> > - BereqHeader Accept-Encoding: bbbb
> >
> > bereq is "BackEnd REQuest", if you want to change the "BackEnd RESPonse",
> > use beresp.http.*.
> >
> > And you can simply to:
> >
> > set bereq.http.accept-encoding = "br, gzip";
> >
> > Just know that while varnish natively support gzip, it's not the case for
> > brotli. You can have a look at this blog post:
> > https://info.varnish-software.com/blog/varnish-cache-brotli-compression
> >
> > --
> > Guillaume Quintard
> >
> > On Mon, Nov 27, 2017 at 1:04 PM, matrix <matrix@matrix2000.name> wrote:
> >>
> >> hi thank you for your reply
> >>
> >> According to varnishlog Bereq header are displayed but origin server
> >> log, only Accept-Encoding: aaaa .
> >>
> >> - BereqHeader Accept-Encoding: aaaa
> >> - BereqHeader Accept-Encoding: bbbb
> >>
> >> I would like to change Accept-Encoding Header to br,gzip, because the
> >> varnish is force replaced Accept-Encoding gzip when backend request.
> >>
> >> VCL
> >> unset bereq.http.Accept-Encoding;
> >> header.append(bereq.http.Accept-Encoding, "aaaa");
> >> header.append(bereq.http.Accept-Encoding, "bbbb");
> >>
> >>
> >> Full varnishlog below
> >>
> >> * << BeReq >> 3
> >> - Begin bereq 2 fetch
> >> - Timestamp Start: 1511783436.988432 0.000000 0.000000
> >> - BereqMethod GET
> >> - BereqURL /cache/200.php
> >> - BereqProtocol HTTP/1.1
> >> - BereqHeader User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
> >> libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> >> - BereqHeader Accept: */*
> >> - BereqHeader host: test.com
> >> - BereqHeader Accept-Encoding: gzip
> >> - BereqHeader Surrogate-Capability: key=ESI/1.0
> >> - BereqHeader X-Cache-Key: /cache/200.php
> >> - BereqHeader X-Varnish: 3
> >> - VCL_call BACKEND_FETCH
> >> - BereqUnset Accept-Encoding: gzip
> >> - BereqHeader Accept-Encoding: aaaa
> >> - BereqHeader Accept-Encoding: bbbb
> >> - VCL_return fetch
> >> - BackendOpen 21 boot.backend1 127.0.0.1 81 127.0.0.1 51782
> >> - BackendStart 127.0.0.1 81
> >> - Timestamp Bereq: 1511783436.988549 0.000118 0.000118
> >> - Timestamp Beresp: 1511783437.198227 0.209795 0.209677
> >> - BerespProtocol HTTP/1.1
> >> - BerespStatus 404
> >> - BerespReason Not Found
> >> - BerespHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
> >> - BerespHeader Content-Type: text/html; charset=UTF-8
> >> - BerespHeader Transfer-Encoding: chunked
> >> - BerespHeader Connection: keep-alive
> >> - BerespHeader Vary: Accept-Encoding
> >> - TTL RFC 86400 10 -1 1511783437 1511783437 1511783437 0 0
> >> - VCL_call BACKEND_RESPONSE
> >> - TTL VCL 300 10 0 1511783437
> >> - VCL_return deliver
> >> - Storage file disk
> >> - ObjProtocol HTTP/1.1
> >> - ObjStatus 404
> >> - ObjReason Not Found
> >> - ObjHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
> >> - ObjHeader Content-Type: text/html; charset=UTF-8
> >> - ObjHeader Vary: Accept-Encoding
> >> - Fetch_Body 2 chunked stream
> >> - BackendReuse 21 boot.backend1
> >> - Timestamp BerespBody: 1511783437.198340 0.209908 0.000113
> >> - Length 16
> >> - BereqAcct 569 0 569 178 16 194
> >> - End
> >>
> >> * << Request >> 2
> >> - Begin req 1 rxreq
> >> - Timestamp Start: 1511783436.988227 0.000000 0.000000
> >> - Timestamp Req: 1511783436.988227 0.000000 0.000000
> >> - ReqStart x.x.x.x 62656
> >> - ReqMethod GET
> >> - ReqURL /cache/200.php?1234
> >> - ReqProtocol HTTP/1.1
> >> - ReqHeader User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
> >> libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> >> - ReqHeader Accept: */*
> >> - ReqHeader Host:test.com
> >> - ReqHeader Accept-Encoding: gzip,deflate
> >> - VCL_call RECV
> >> - ReqUnset Host:test.com
> >> - ReqHeader host: test.com
> >> - ReqUnset Accept-Encoding: gzip,deflate
> >> - ReqHeader Accept-Encoding: gzip
> >> - ReqHeader Surrogate-Capability: key=ESI/1.0
> >> - ReqURL /cache/200.php
> >> - VCL_return hash
> >> - VCL_call HASH
> >> - ReqHeader X-Cache-Key: /cache/200.php
> >> - VCL_Log redhash
> >> - ReqUnset X-Cache-Key: /cache/200.php
> >> - ReqHeader X-Cache-Key: /cache/200.php
> >> - VCL_return lookup
> >> - VCL_call MISS
> >> - VCL_Log redmiss
> >> - VCL_return fetch
> >> - Link bereq 3 fetch
> >> - Timestamp Fetch: 1511783437.198397 0.210170 0.210170
> >> - RespProtocol HTTP/1.1
> >> - RespStatus 404
> >> - RespReason Not Found
> >> - RespHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
> >> - RespHeader Content-Type: text/html; charset=UTF-8
> >> - RespHeader Vary: Accept-Encoding
> >> - RespHeader X-Varnish: 2
> >> - RespHeader Age: 0
> >> - RespHeader Via: 1.1 varnish-v4
> >> - VCL_call DELIVER
> >> - VCL_Log reddeliver
> >> - RespUnset X-Varnish: 2
> >> - RespUnset Via: 1.1 varnish-v4
> >> - VCL_return deliver
> >> - Timestamp Process: 1511783437.198471 0.210244 0.000074
> >> - RespHeader Content-Length: 16
> >> - Debug "RES_MODE 2"
> >> - RespHeader Connection: keep-alive
> >> - Timestamp Resp: 1511783437.198515 0.210288 0.000044
> >> - ReqAcct 219 0 219 282 16 298
> >> - End
> >>
> >> * << Session >> 1
> >> - Begin sess 0 HTTP/1
> >> - SessOpen x.x.x.x 62656 0.0.0.0:80 172.26.12.250 80
> >> 1511783436.987762 20
> >> - Link req 2 rxreq
> >> - SessClose REM_CLOSE 0.217
> >> - End
> >>
> >>
> >> 2017-11-27 20:21 GMT+09:00 Guillaume Quintard
> >> <guillaume@varnish-software.com>:
> >> > Hi,
> >> >
> >> > I would expect to have two AE headers, one with aaa and one with bbb,
> >> > would
> >> > you have the varnishlog of that particular bereq?
> >> >
> >> > Also, it's probably out of scope, but are you actually changing the
> >> > Accept-Encoding header, or is that just for the example?
> >> >
> >> > --
> >> > Guillaume Quintard
> >> >
> >> > On Mon, Nov 27, 2017 at 12:15 PM, matrix <matrix@matrix2000.name>
> wrote:
> >> >>
> >> >> I would like to control bereq header below.(varnish4.1.8)
> >> >>
> >> >> header.append(bereq.http.Accept-Encoding, "aaa");
> >> >> header.append(bereq.http.Accept-Encoding, "bbb");
> >> >>
> >> >> But bereq.http.Accept-Encoding header is "aaa". (not "aaa,bbb")
> >> >> is it possible to handle the bereq using vmod_header ?
> >> >>
> >> >> or is it varnish-modules bug?
> >> >>
> >> >> Best regards.
> >> >> _______________________________________________
> >> >> varnish-misc mailing list
> >> >> varnish-misc@varnish-cache.org
> >> >> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
> >> >
> >> >
> >
> >
>
Re: vmod_header can be used in vcl_backend_fetch? [ In reply to ]
I was misunderstanding vmod_header action.
The Vmod is correct action.

thank you Guillaume !

2017-11-28 18:03 GMT+09:00 Guillaume Quintard <guillaume@varnish-software.com>:
> No:
> https://github.com/varnish/varnish-modules/blob/master/src/vmod_header.vcc#L35
>
> Check ``man vmod_headers`` for more info.
>
> --
> Guillaume Quintard
>
> On Tue, Nov 28, 2017 at 8:03 AM, matrix <matrix@matrix2000.name> wrote:
>>
>> thank you for checking.
>>
>> I would like to make it clear about vmod header action.
>> Does ‘header append’ mean to append value of each header? or to append
>> the entire header ?
>>
>> I complete thought that handled value of existing header below.
>>
>> header.append(bereq.http.Accept-Encoding, "aaaa");
>>
>> Vary:http.Accept-Encoding"aaaa"
>>
>> header.append(bereq.http.Accept-Encoding, "bbbb");
>>
>> Vary:http.Accept-Encoding"aaaa,bbbb"
>>
>> *thank you for information about br. I already check!
>>
>>
>>
>> 2017-11-27 21:23 GMT+09:00 Guillaume Quintard
>> <guillaume@varnish-software.com>:
>> > So the varnishlog confirms the vmods works as expected:
>> >
>> > - BereqUnset Accept-Encoding: gzip
>> > - BereqHeader Accept-Encoding: aaaa
>> > - BereqHeader Accept-Encoding: bbbb
>> >
>> > bereq is "BackEnd REQuest", if you want to change the "BackEnd
>> > RESPonse",
>> > use beresp.http.*.
>> >
>> > And you can simply to:
>> >
>> > set bereq.http.accept-encoding = "br, gzip";
>> >
>> > Just know that while varnish natively support gzip, it's not the case
>> > for
>> > brotli. You can have a look at this blog post:
>> > https://info.varnish-software.com/blog/varnish-cache-brotli-compression
>> >
>> > --
>> > Guillaume Quintard
>> >
>> > On Mon, Nov 27, 2017 at 1:04 PM, matrix <matrix@matrix2000.name> wrote:
>> >>
>> >> hi thank you for your reply
>> >>
>> >> According to varnishlog Bereq header are displayed but origin server
>> >> log, only Accept-Encoding: aaaa .
>> >>
>> >> - BereqHeader Accept-Encoding: aaaa
>> >> - BereqHeader Accept-Encoding: bbbb
>> >>
>> >> I would like to change Accept-Encoding Header to br,gzip, because the
>> >> varnish is force replaced Accept-Encoding gzip when backend request.
>> >>
>> >> VCL
>> >> unset bereq.http.Accept-Encoding;
>> >> header.append(bereq.http.Accept-Encoding, "aaaa");
>> >> header.append(bereq.http.Accept-Encoding, "bbbb");
>> >>
>> >>
>> >> Full varnishlog below
>> >>
>> >> * << BeReq >> 3
>> >> - Begin bereq 2 fetch
>> >> - Timestamp Start: 1511783436.988432 0.000000 0.000000
>> >> - BereqMethod GET
>> >> - BereqURL /cache/200.php
>> >> - BereqProtocol HTTP/1.1
>> >> - BereqHeader User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
>> >> libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
>> >> - BereqHeader Accept: */*
>> >> - BereqHeader host: test.com
>> >> - BereqHeader Accept-Encoding: gzip
>> >> - BereqHeader Surrogate-Capability: key=ESI/1.0
>> >> - BereqHeader X-Cache-Key: /cache/200.php
>> >> - BereqHeader X-Varnish: 3
>> >> - VCL_call BACKEND_FETCH
>> >> - BereqUnset Accept-Encoding: gzip
>> >> - BereqHeader Accept-Encoding: aaaa
>> >> - BereqHeader Accept-Encoding: bbbb
>> >> - VCL_return fetch
>> >> - BackendOpen 21 boot.backend1 127.0.0.1 81 127.0.0.1 51782
>> >> - BackendStart 127.0.0.1 81
>> >> - Timestamp Bereq: 1511783436.988549 0.000118 0.000118
>> >> - Timestamp Beresp: 1511783437.198227 0.209795 0.209677
>> >> - BerespProtocol HTTP/1.1
>> >> - BerespStatus 404
>> >> - BerespReason Not Found
>> >> - BerespHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
>> >> - BerespHeader Content-Type: text/html; charset=UTF-8
>> >> - BerespHeader Transfer-Encoding: chunked
>> >> - BerespHeader Connection: keep-alive
>> >> - BerespHeader Vary: Accept-Encoding
>> >> - TTL RFC 86400 10 -1 1511783437 1511783437 1511783437 0 0
>> >> - VCL_call BACKEND_RESPONSE
>> >> - TTL VCL 300 10 0 1511783437
>> >> - VCL_return deliver
>> >> - Storage file disk
>> >> - ObjProtocol HTTP/1.1
>> >> - ObjStatus 404
>> >> - ObjReason Not Found
>> >> - ObjHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
>> >> - ObjHeader Content-Type: text/html; charset=UTF-8
>> >> - ObjHeader Vary: Accept-Encoding
>> >> - Fetch_Body 2 chunked stream
>> >> - BackendReuse 21 boot.backend1
>> >> - Timestamp BerespBody: 1511783437.198340 0.209908 0.000113
>> >> - Length 16
>> >> - BereqAcct 569 0 569 178 16 194
>> >> - End
>> >>
>> >> * << Request >> 2
>> >> - Begin req 1 rxreq
>> >> - Timestamp Start: 1511783436.988227 0.000000 0.000000
>> >> - Timestamp Req: 1511783436.988227 0.000000 0.000000
>> >> - ReqStart x.x.x.x 62656
>> >> - ReqMethod GET
>> >> - ReqURL /cache/200.php?1234
>> >> - ReqProtocol HTTP/1.1
>> >> - ReqHeader User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
>> >> libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
>> >> - ReqHeader Accept: */*
>> >> - ReqHeader Host:test.com
>> >> - ReqHeader Accept-Encoding: gzip,deflate
>> >> - VCL_call RECV
>> >> - ReqUnset Host:test.com
>> >> - ReqHeader host: test.com
>> >> - ReqUnset Accept-Encoding: gzip,deflate
>> >> - ReqHeader Accept-Encoding: gzip
>> >> - ReqHeader Surrogate-Capability: key=ESI/1.0
>> >> - ReqURL /cache/200.php
>> >> - VCL_return hash
>> >> - VCL_call HASH
>> >> - ReqHeader X-Cache-Key: /cache/200.php
>> >> - VCL_Log redhash
>> >> - ReqUnset X-Cache-Key: /cache/200.php
>> >> - ReqHeader X-Cache-Key: /cache/200.php
>> >> - VCL_return lookup
>> >> - VCL_call MISS
>> >> - VCL_Log redmiss
>> >> - VCL_return fetch
>> >> - Link bereq 3 fetch
>> >> - Timestamp Fetch: 1511783437.198397 0.210170 0.210170
>> >> - RespProtocol HTTP/1.1
>> >> - RespStatus 404
>> >> - RespReason Not Found
>> >> - RespHeader Date: Mon, 27 Nov 2017 11:50:37 GMT
>> >> - RespHeader Content-Type: text/html; charset=UTF-8
>> >> - RespHeader Vary: Accept-Encoding
>> >> - RespHeader X-Varnish: 2
>> >> - RespHeader Age: 0
>> >> - RespHeader Via: 1.1 varnish-v4
>> >> - VCL_call DELIVER
>> >> - VCL_Log reddeliver
>> >> - RespUnset X-Varnish: 2
>> >> - RespUnset Via: 1.1 varnish-v4
>> >> - VCL_return deliver
>> >> - Timestamp Process: 1511783437.198471 0.210244 0.000074
>> >> - RespHeader Content-Length: 16
>> >> - Debug "RES_MODE 2"
>> >> - RespHeader Connection: keep-alive
>> >> - Timestamp Resp: 1511783437.198515 0.210288 0.000044
>> >> - ReqAcct 219 0 219 282 16 298
>> >> - End
>> >>
>> >> * << Session >> 1
>> >> - Begin sess 0 HTTP/1
>> >> - SessOpen x.x.x.x 62656 0.0.0.0:80 172.26.12.250 80
>> >> 1511783436.987762 20
>> >> - Link req 2 rxreq
>> >> - SessClose REM_CLOSE 0.217
>> >> - End
>> >>
>> >>
>> >> 2017-11-27 20:21 GMT+09:00 Guillaume Quintard
>> >> <guillaume@varnish-software.com>:
>> >> > Hi,
>> >> >
>> >> > I would expect to have two AE headers, one with aaa and one with bbb,
>> >> > would
>> >> > you have the varnishlog of that particular bereq?
>> >> >
>> >> > Also, it's probably out of scope, but are you actually changing the
>> >> > Accept-Encoding header, or is that just for the example?
>> >> >
>> >> > --
>> >> > Guillaume Quintard
>> >> >
>> >> > On Mon, Nov 27, 2017 at 12:15 PM, matrix <matrix@matrix2000.name>
>> >> > wrote:
>> >> >>
>> >> >> I would like to control bereq header below.(varnish4.1.8)
>> >> >>
>> >> >> header.append(bereq.http.Accept-Encoding, "aaa");
>> >> >> header.append(bereq.http.Accept-Encoding, "bbb");
>> >> >>
>> >> >> But bereq.http.Accept-Encoding header is "aaa". (not "aaa,bbb")
>> >> >> is it possible to handle the bereq using vmod_header ?
>> >> >>
>> >> >> or is it varnish-modules bug?
>> >> >>
>> >> >> Best regards.
>> >> >> _______________________________________________
>> >> >> varnish-misc mailing list
>> >> >> varnish-misc@varnish-cache.org
>> >> >> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>> >> >
>> >> >
>> >
>> >
>
>
_______________________________________________
varnish-misc mailing list
varnish-misc@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc