I like varnish a lot. It makes crappy sites fast. But varnish won’t cache https unless you use SSL termination with nginx or hitch. Its fairly straightforward to setup nginx/hitch for SSL termination in front of varnish. However, the problem that you may encounter with SSL termination is that CMS such as wordpress will see and serve the requests as http, which most browsers will block as mixed content. Adding an .htaccess redirect will cause an infinite loop.
The fix is in the following article:
http://stackoverflow.com/questions/30831317/redirect-loop-with-nginx-ssl-termination-via-varnish-apache-on-wordpress
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';
Adding this to the top of the wp-config.php resolves the issue.
Of course, we have to benchmark, which on a VPS, isn’t accurate since I’ve noticed huge variations between tests. However, Hitch resource usage is consistently lower than nginx’s.
Hitch:
Lifting the server siege…
Transactions: 91952 hits
Availability: 100.00 %
Elapsed time: 59.91 secs
Data transferred: 1838.94 MB
Response time: 0.02 secs
Transaction rate: 1534.84 trans/sec
Throughput: 30.70 MB/sec
Concurrency: 24.39
Successful transactions: 91952
Failed transactions: 0
Longest transaction: 0.39
Shortest transaction: 0.00

hitch cpu and mem usage
Nginx:
Lifting the server siege…
Transactions: 62853 hits
Availability: 100.00 %
Elapsed time: 59.15 secs
Data transferred: 1257.11 MB
Response time: 0.02 secs
Transaction rate: 1062.60 trans/sec
Throughput: 21.25 MB/sec
Concurrency: 24.76
Successful transactions: 62853
Failed transactions: 0
Longest transaction: 1.07
Shortest transaction: 0.00

nginx cpu and usage (load actually reaches ~8
Static Page Benchmarking Varnish:
Concurrency 500: RAM usage : ~350MB (170MB apache) to ~600MB
Transactions: 508792 hits
Availability: 100.00 %
Elapsed time: 29.73 secs
Data transferred: 1.46 MB
Response time: 0.03 secs
Transaction rate: 17113.76 trans/sec
Throughput: 0.05 MB/sec
Concurrency: 471.13
Successful transactions: 508792
Failed transactions: 0
Longest transaction: 3.03
Concurrency 1000: RAM usage ~350MB to 785MB
Transactions: 410450 hits
Availability: 100.00 %
Elapsed time: 29.72 secs
Data transferred: 1.17 MB
Response time: 0.07 secs
Transaction rate: 13810.57 trans/sec
Throughput: 0.04 MB/sec
Concurrency: 958.80
Successful transactions: 410451
Failed transactions: 5
Longest transaction: 3.06
Shortest transaction: 0.00
Static Page Benchmarking Apache:
Concurrency 500: RAM usage : ~237MB (170MB apache) to ~535MB
Transactions: 331483 hits
Availability: 100.00 %
Elapsed time: 29.88 secs
Data transferred: 0.95 MB
Response time: 0.04 secs
Transaction rate: 11093.81 trans/sec
Throughput: 0.03 MB/sec
Concurrency: 492.84
Successful transactions: 331483
Failed transactions: 0
Longest transaction: 1.05
Shortest transaction: 0.00
Concurrency 1000: RAM usage : ~237MB (170MB apache) to ~803MB
Transactions: 290153 hits
Availability: 100.00 %
Elapsed time: 29.34 secs
Data transferred: 0.83 MB
Response time: 0.09 secs
Transaction rate: 9889.33 trans/sec
Throughput: 0.03 MB/sec
Concurrency: 880.06
Successful transactions: 290153
Failed transactions: 0
Longest transaction: 20.88
Shortest transaction: 0.00
NOTES: Varnish has significant performance gains over Apache for static content, however, with much higher CPU load of ~8 vs Apache ~3, during benchmarks. RAM usage is similar.
Static Page Benchmarking Nginx:
Concurrency 500: RAM usage : ~218MBĀ to ~532MB
Transactions: 327345 hits
Availability: 100.00 %
Elapsed time: 29.99 secs
Data transferred: 0.94 MB
Response time: 0.04 secs
Transaction rate: 10915.14 trans/sec
Throughput: 0.03 MB/sec
Concurrency: 440.45
Successful transactions: 327345
Failed transactions: 0
Longest transaction: 5.05
Shortest transaction: 0.00
NOTES: CPU load approaching 10, much higher than with apache, and less overall hits as well. I will have to complete 1000 concurrent test another time, as VPS is becoming unresponsive.