A high traffic site I host for a client needed to be available on both HTTP and HTTPS. This particular site, though, needed different caches depending on what scheme was used.
Note: Since Varnish doesn’t support HTTPS, it is in this case placed behind Nginx. Nginx then indicates any HTTPS requests passed onto by setting the X-Forwarded-Proto
header.
With Varnish handling caching, this is what needed to be added to the configuration:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sub vcl_hash { | |
# … Other vcl_hash stuff | |
# If this is a HTTPS request, keep it in a different cache | |
if (req.http.X-Forwarded-Proto) { | |
hash_data(req.http.X-Forwarded-Proto); | |
} |