internal, redirects and proxy_cache
Maxim Dounin
mdounin at mdounin.ru
Sat Jun 22 09:47:46 UTC 2013
Hello!
On Sat, Jun 22, 2013 at 10:10:25AM +0100, Nic Ferrier wrote:
> A very related question was asked before here:
>
> http://forum.nginx.org/read.php?2,236720,236782#msg-236782
>
> But I'm not sure that asked exactly what I want to do.
It's not. It's about caching of a response with
an X-Accel-Redirect header, while your need to cache a response
after an internal redirect. What you need is expected to work
fine, see below.
> I've got locations like this:
>
> location /packages/archive-contents {
> proxy_pass http://localhost:8005;
> proxy_http_version 1.1;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> }
>
> location /packages/archive-contents/ {
> internal;
> proxy_pass http://localhost:8005;
> proxy_http_version 1.1;
> }
>
>
> The first one calls out to the app server which sends an X-Forwarded-For
> to the second one, something like:
>
> http://host/packages/archive-contents/38381632639138
Correct header name is X-Accel-Redirect. Correct value is
"/packages/archive-contents/38381632639138". That is, header
returned should look like:
X-Accel-Redirect: /packages/archive-contents/38381632639138
> I would like to cache that response so that nginx hit the app server
> from the first location which redirects to the 2nd location but that
> returns a cached response.
>
> When the redirect from the first location changes the second location
> would have to cache it.
>
>
> Is that possible? I've tried adding proxy_cache to the 2nd location,
> like so:
>
> location /packages/archive-contents/ {
> internal;
> proxy_pass http://localhost:8005;
> proxy_http_version 1.1;
> proxy_cache marmaladerepo-cache;
> proxy_cache_valid 200 302 1d;
> proxy_cache_valid 404 60m;
> }
>
> but this doesn't seem to have an effect.
This should work assuming you are using correct header to trigger
internal redirect, and the response returned doesn't disable cache
(there is more than one way to do it, see
http://nginx.org/r/proxy_cache_valid).
--
Maxim Dounin
http://nginx.org/en/donation.html
More information about the nginx
mailing list