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.
----appa On Sat, May 18, 2013 at 2:52 PM, roysmith649 <[email protected]> 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: > http://forum.nginx.org/read.php?2,239315,239315#msg-239315 > > _______________________________________________ > nginx mailing list > [email protected] > http://mailman.nginx.org/mailman/listinfo/nginx >
_______________________________________________ nginx mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx
