Varnish doesn't (yet) support gzip compression, so it might be an idea to swap it around with nginx in front to compress what varnish sends back. Since varnish and nginx don't fight for the same resources (nginx uses CPU for gzip compression, while varnish uses memory) they should run smoothly on the same machine.
Varnish now supports gzip compression, so unless you need SSL termination (as suggested in the comments), I would suggest putting varnish directly in contact with the Internet.
(internet) --> (varnish, gzip, caching, esi) --> (application)
(internet) --> (nginx, ssl)--> (varnish, gzip, caching, esi) --> (application)
If you want apache in there too (for the ubiquitous mod_foobar support), I'd put it between varnish and the application
Update: Updated to include gzip support in varnish 3.0. Added ssl / esi as suggested in comments