Mit Varnish 4 habe ich eine Reihe von Backends, die mit einem gültigen Content-Length
Header und keine Transfer-Encoding
Header antworten.Wie kann ich die Codierung "Transfer-Encoding: chunked" in Varnish deaktivieren?
Auf dem ersten Treffer von einem Client, anstatt mit diesen Header an den Client reagiert, Lack sinkt die Content-Length
Header und das Hinzufügen von Transfer-Encoding: chunked
auf die Antwort. (Interessanterweise scheint die Payload keine Chunks zu enthalten - es ist eine zusammenhängende Payload).
Dies verursacht schwerwiegende Probleme für Clients wie Flash-Videoplayer, die versuchen, Segment-Größe, Bandbreite, usw. Analyse basierend auf der Content-Length
-Header zu tun. Ihre Analyse fehlschlägt, und sie können nicht Dinge tun, wie Multi-Bitrate-Streaming etc.
Ich habe versucht, eine Reihe von halb offensichtlichen Dingen wie:
beresp.do_stream = true
beresp.do_gzip = false
unset req.http.Accept-Encoding
Probe Backend Antwort:
HTTP/1.1 200 OK
Cache-Control: public, max-age=600
Content-Type: video/mp4
Date: Tue, 13 May 2014 19:44:35 GMT
Server: Apache
Content-Length: 796618
Connection: keep-alive
Musterlack Antwort:
HTTP/1.1 200 OK
Server: Apache
Cache-Control: public, max-age=600
Content-Type: video/mp4
Date: Tue, 13 May 2014 23:10:06 GMT
X-Varnish: 2
Age: 0
Transfer-Encoding: chunked
Accept-Ranges: bytes
Folgelasten des Objekts tun einschließlich der Content-Length
Header, nur nicht die erste Last in den Cache.
VCL: https://gist.github.com/onethumb/e64a405cc579909cace1
varnishlog Ausgang: https://gist.github.com/onethumb/e66a2bc4727a3a5340b6
Varnish Trac: https://www.varnish-cache.org/trac/ticket/1506
haben das Problem auch, warten auf Update ohne Umgehung der Streamer. –