Merging equivalent cache keys?

António P. P. Almeida appa at
Sat May 18 13:45:12 UTC 2013

Using the embedded Lua module you can add the three IDs as integers and
reduce it to a single number.
That way you'll get a single number  by virtue if the commutativity of real
number addition. AFAIK there
are no arithmetic operators available on the Nginx config language.


On Sat, May 18, 2013 at 2:52 PM, roysmith649 <nginx-forum at> wrote:

> We've got a route which is used to retrieve multiple objects in parallel.
> The client does a GET on /api/1/station/multi?id=123&id=456&id=789.  We
> cache these in our nginx config:
>        location ~ /api/[^/]+/station/multi {
>               proxy_pass http://localhost:8000;
>               proxy_set_header X-Real-IP  $remote_addr;
>               proxy_set_header Host $host;
>               proxy_set_header X-Forwarded-Host $host;
>               proxy_set_header X-Forwarded-Server $host;
>               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>               proxy_cache api;
>               proxy_cache_use_stale updating;
>        }
> The problem is, clients present the ids in random order. For example, one
> client might ask for id=1&id=2, and another ask for id=2&id=1.  Both should
> return exactly the same response, but map to different cache keys.  For two
> ids, it's not that bad, but many of the calls are for large numbers of ids
> and the combinatorics quickly spin out of control.
> Is there any way to rewrite the keys in nginx to canonicalize them?
>  Sorting
> all the ids in numerical order would do it.
> Posted at Nginx Forum:
> _______________________________________________
> nginx mailing list
> nginx at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the nginx mailing list