As promised, here is a proposal for a new definition of what varnish is for the FAQ (links in <>, changes in bold, comments in []). I did compile some mails exchanged the last days on varnish-dev, credit for this goes to many people. My mother tongue not being english, there might be quite a few spelling/grammatical errors.
What is varnish ? [new] Varnish is a HTTP accelerator : a high performance HTTP server to be put in front of a slow one (like apache) to speed up an existing website. Rather than a true reverse proxy (as in <RFC2616>), varnish is a "HTTP surrogate", as defined in the <Edge Architecture Specification> w3c draft. Varnish can be very easily adapted to any website, and <become a reverse proxy> with a few lines of configuration [link to the section in the FAQ, below]. Why bother with Varnish - why not use Squid ? [modified] Varnish was written from the ground up to be a high performance HTTP accelerator. Squid is a forward proxy that can be configured as a reverse proxy, that, as a side effect, can provide HTTP accelerating features. Besides - Squid is rather old, bloated and designed like computer programs where supposed to be designed in 1980. Please see <ArchitectNotes <http://varnish.projects.linpro.no/wiki/ArchitectNotes> > for details. How do I configure varnish to act like a classical reverse proxy ? [new] Here is a sample VCL to do this : backend default { set backend.host = "backend.example.com"; set backend.port = "http"; } sub vcl_recv { if (req.request != "GET" && req.request != "HEAD") { pipe; } if (req.http.Expect) { pipe; } if (req.http.Authenticate) { pass; } if (req.http.Cache-Control ~ "no-cache") { pass; } lookup; } sub vcl_pipe { pipe; } sub vcl_pass { pass; } sub vcl_hash { set req.hash += req.url; set req.hash += req.http.host; hash; } sub vcl_hit { if (!obj.cacheable) { pass; } deliver; } sub vcl_miss { fetch; } sub vcl_fetch { if (!obj.valid) { error; } if (!obj.cacheable) { pass; } if (obj.http.Set-Cookie) { pass; } if (obj.http.Pragma ~ "no-cache" || obj.http.Cache-Control ~ "(no-cache|private)" ) { pass; } insert; } sub vcl_deliver { deliver; } sub vcl_timeout { discard; } sub vcl_discard { discard; } What do you think of this ? Jean-François Bustarret WAT - Responsable technique http://www.wat.tv
_______________________________________________ varnish-misc mailing list [email protected] http://projects.linpro.no/mailman/listinfo/varnish-misc
