varnish content length replaced

Dridi Boukelmoune dridi at varni.sh
Sat May 16 15:19:07 CEST 2015


Hi,

Could you please send enough VCL to reproduce?

Please find below (and attached) a test case that doesn't reproduce
your issue. Since I only had the backend request, I inferred the
client request from it. As you can see, Varnish 4 (4.0.3 on my
machine) built-in VCL does nothing by default.

--->8-------->8-------->8-------->8-------->8-------->8-------->8-------->8-------->8-------->8-------->8-------->8---
server s1 {
    rxreq
    txresp -hdr "Server: Apache" \
           -hdr {P3P: CP="ALL DSP COR LAW CUR DEVi TAI PSAi PSD
                          IVA IVD CONo HIS TELo OUR DEL SAM BUS LOC"
              policyref="http://xxx.domain.com/w3c/p3p.xml"} \
           -hdr "Last-Modified: Wed, 06 May 2015 06:54:03 GMT" \
           -hdr "Accept-Ranges: bytes" \
           -hdr "Content-Type: application/font-woff" \
           -bodylen 25008
} -start

varnish v1 -vcl+backend {
    # built-in VCL
} -start

client c1 {
    txreq -url "/ajaxprism/js_jq_1_0/css/fonts/roboto-regular-webfont.woff" \
          -hdr "Accept: application/font-woff;q=0.9,*/*;q=0.8" \
          -hdr "Accept-Language: en-US,en;q=0.5" \
          -hdr "Origin: http://xxx.domain.com" \
          -hdr "Pragma: no-cache" \
          -hdr "Referer:http://xxx.domain.com/ajaxprism/js_jq_1_0/css/style_2.css"\
          -hdr {User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:37.0) Gecko/20100101
                            Firefox/37.0} \
          -hdr "host: xxx.domain.com" \
          -hdr "Accept-Encoding: gzip"
    rxresp
    expect resp.http.content-length != <undef>
    expect resp.http.content-length == "25008"
} -run
--->8-------->8-------->8-------->8-------->8-------->8-------->8-------->8-------->8-------->8-------->8-------->8---

I also don't understand how it's a problem to not have a C-L header
for chunked encoding.

Regards,
Dridi

On Thu, May 7, 2015 at 8:31 AM, Anand Shah <anand at rediff-inc.com> wrote:
> Hello,
>
>
> Using Varnish 4, I have a set of backends that're responding with a valid
> Content-Length header and no Transfer-Encoding header. On the first hit from
> a client, rather than responding to the client with those headers, Varnish
> is dropping the Content-Length header and adding Transfer-Encoding: chunked
> to the response. This is especially happening for fonts. The same data when
> fetched from apache and nginx works like a charm and continue to be
> problematic when used varnish in front.
>
> I've tried a number of semi-obvious things like below but all in vain:
>
> beresp.do_stream = true
> beresp.do_gzip = false
> unset req.http.Accept-Encoding
>
>
> Sample varnishlog <backend> for your reference.
>
>
>
> *   << BeReq    >> 247282680
> -   Begin          bereq 247282679 fetch
> -   Timestamp      Start: 1430979942.850688 0.000000 0.000000
> -   BereqMethod    GET
> -   BereqURL
> /ajaxprism/js_jq_1_0/css/fonts/roboto-regular-webfont.woff
> -   BereqProtocol  HTTP/1.1
> -   BereqHeader    Accept: application/font-woff;q=0.9,*/*;q=0.8
> -   BereqHeader    Accept-Language: en-US,en;q=0.5
> -   BereqHeader    Origin: http://xxx.domain.com
> -   BereqHeader    Pragma: no-cache
> -   BereqHeader    Referer:
> http://xxx.domain.com/ajaxprism/js_jq_1_0/css/style_2.css
> -   BereqHeader    User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:37.0)
> Gecko/20100101 Firefox/37.0
> -   BereqHeader    X-Forwarded-For: ::1
> -   BereqHeader    host: xxx.domain.com
> -   BereqHeader    Accept-Encoding: gzip
> -   BereqHeader    X-Varnish: 247282680
> -   VCL_call       BACKEND_FETCH
> -   VCL_return     fetch
> -   BackendClose   24 jdelivery(xxx.xxx.xxx.xxx,,80) toolate
> -   BackendOpen    24 jdelivery(xxx.xxx.xxx.xxx,,80) xxx.xxx.xxx.xxx 35680
> -   Backend        24 jdelivery jdelivery(xxx.xxx.xxx.xxx,,80)
> -   Timestamp      Bereq: 1430979942.852142 0.001454 0.001454
> -   Timestamp      Beresp: 1430979942.855756 0.005068 0.003614
> -   BerespProtocol HTTP/1.1
> -   BerespStatus   200
> -   BerespReason   OK
> -   BerespHeader   Date: Thu, 07 May 2015 06:25:43 GMT
> -   BerespHeader   Server: Apache
> -   BerespHeader   P3P: CP="ALL DSP COR LAW CUR DEVi TAI PSAi PSD IVA IVD
> CONo HIS TELo OUR DEL SAM BUS LOC"
> policyref="http://xxx.domain.com/w3c/p3p.xml"
> -   BerespHeader   Last-Modified: Wed, 06 May 2015 06:54:03 GMT
> -   BerespHeader   Accept-Ranges: bytes
> -   BerespHeader   Content-Length: 25008
> -   BerespHeader   Content-Type: application/font-woff
> -   TTL            RFC 120 -1 -1 1430979943 1430979943 1430979943 0 0
> -   VCL_call       BACKEND_RESPONSE
> -   TTL            VCL 120 604800 0 1430979943
> -   VCL_return     deliver
> -   Storage        file s0
> -   ObjProtocol    HTTP/1.1
> -   ObjStatus      200
> -   ObjReason      OK
> -   ObjHeader      Date: Thu, 07 May 2015 06:25:43 GMT
> -   ObjHeader      Server: Apache
> -   ObjHeader      P3P: CP="ALL DSP COR LAW CUR DEVi TAI PSAi PSD IVA IVD
> CONo HIS TELo OUR DEL SAM BUS LOC"
> policyref="http://xxx.domain.com/w3c/p3p.xml"
> -   ObjHeader      Last-Modified: Wed, 06 May 2015 06:54:03 GMT
> -   ObjHeader      Content-Type: application/font-woff
> -   Fetch_Body     3 length stream
> -   BackendReuse   24 jdelivery(xxx.xxx.xxx.xxx,,80)
> -   Timestamp      BerespBody: 1430979942.859386 0.008698 0.003630
> -   Length         25008
> -   BereqAcct      449 0 449 337 25008 25345
> -   End
>
>
> Regards,
> Anand
> _______________________________________________
> varnish-dev mailing list
> varnish-dev at varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: woff.vtc
Type: application/octet-stream
Size: 1124 bytes
Desc: not available
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20150516/4a8bf500/attachment.obj>


More information about the varnish-misc mailing list