<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Fri, Dec 2, 2016 at 3:51 AM, Andreas Plesner <span dir="ltr"><<a href="mailto:apj@mutt.dk" target="_blank">apj@mutt.dk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
<br>
</span>Yes. This is what we do:<br>
<br>
sub vcl_deliver {<br>
  if ((resp.status == 301) || (resp.status == 302)) {<br>
    set req.url = regsub(resp.http.Location,"^<wbr>http://[^/]+(.*)","\1");<br>
    return(restart);<br>
  }<br>
}<br>
<br>
Handling of the host header (and all the possible backends) is left as an<br>
exercise for the reader.<br>
<br>
What this does is that it caches the redirect as well as the destination, thus<br>
sort-of normalizing the request, while still caching the ultimate destination<br>
only once.<br>
<br></blockquote><div><br><br></div><div>Tentatively your rules work for me. Is there any way for varnish to cache the 302 redirect if its on a completely different host? In my example we are hitting <a href="http://media.domain.com">media.domain.com</a> which hits an nginx server that redirects it to a completely different URL (S3) that varnish is not caching. After testing your rule, I see that its definitely skipping a step and providing the destination URL (S3) to the browser. But that destination is not being cached. <br><br></div><div>Is there a way to hide that hostname/url change completely so its transparent to the end user? <br></div></div><br></div></div>