Set bereq.http.connection:close in vcl_pipe by default

Lasse Karstensen lkarsten at varnish-software.com
Mon Jan 27 15:07:30 CET 2014


I'm going through the documentation, and came over our handling of
"bereq.http.Connection: close" in vcl_pipe. In the builtin VCL
(previously default.vcl) there is a commented out line that the administrator
can enable if they want to only do a single request per connection.

What I'm struggling with is that we have a good amount of help requests and
tickets because of this. I think many people must set connection:close for
pipe to work as they expect. (possibly overestimated by me.)

I don't know the history here, but I don't quite understand why we don't
flip this default and save us/them the trouble?


Downside is mainly TCP slow start and extra connection setup work on
the backend.

The crazy people doing SSH-tunneling or whatever must remember to unset the
header if we do. Websocket ("bereq.http.Connection: Upgrade") handling must
be done manually anyway, so they'll figure it out.

On the upside we get (I think) less odd things to write documentation about.

No more wrong-vhost-go-away if the browser sent a subsequent request for a
different vhost that went through to the wrong backend. Fewer unecessary
backend requests because the client asked a piped session for something that
Varnish already could serve from cache. Request coalescing that works.

Tollef had some input on how this should be handled in VCL, but I thought
I'd run the main idea through the development team first.

Any takers on the history here? Why do we do it this way?
-- 
With regards,
Lasse Karstensen
Varnish Software AS



More information about the varnish-dev mailing list