Are numbered captures available to the proxy cache key construct?
Maxim Dounin
mdounin at mdounin.ru
Mon Sep 20 16:17:39 MSD 2010
Hello!
On Mon, Sep 20, 2010 at 07:24:30AM -0400, portante wrote:
> Hi Folks,
>
> Can somebody comment on whether proxy_cache_key is supposed to be able
> to handle # captures? I believe the below example shows how I want to
> use it, but I can't get it to work.
>
> Thanks,
>
> -peter
>
>
> [code]
> location ~ ^/api/rest/\d+/(.+)/.+/*$ {
> proxy_cache apiCache;
> proxy_cache_valid 200 7d;
> proxy_cache_use_stale updating;
> proxy_cache_key "$host.$1";
> if ($upstream_http_content_encoding !~* "") { gzip off; }
> proxy_pass http://127.0.0.1:8080$request_uri;
> }
> [/code]
Regexp match in "if" directive will be executed (and will reset
enumerated captures) before proxy module will have cance to grab
$1. Use named captures as available in 0.8.25+ to avoid such
problems.
Additionally, "if" directive in question is useless due to the
following reasons:
- $upstream_* variables are only available after nginx got reply
from upstream, while rewrite directives are executed at rewrite
phase - before we even send request to upstream.
- gzip module is smart enough to don't re-encode replies which
already have content-encoding applied.
Maxim Dounin
More information about the nginx
mailing list