trouble changing uri to query string

Francis Daly francis at
Wed Sep 24 12:50:14 UTC 2014

On Sun, Sep 21, 2014 at 04:40:00PM +0300, Roland RoLaNd wrote:

Hi there,

> Using map is cool idea, though i have around 2000 possible imageId and size and more than 9 million user id..  they're always imageIDs are prone to change, wouldn't that mean i have to add them manually every time ? 

map can use regex.

However, map can only use a single variable, so I think you would need
two maps (or perhaps a "set" within an "if") in order to save the request
uri without the user part.

For example:

  map $uri $the_bit_before_user {
    ~(?P<m>.*)&user=[0-9]+& $m;
    default $uri;

  map $uri $the_bit_after_user {
    ~&user=[0-9]+(?P<m>&.*) $m;
    default "";

followed by a later

  set $request_without_user $the_bit_before_user$the_bit_after_user;

could give you a variable that might be useful to use as part of your

> On another note, let's say i mapped all wanted cache keys, how can i force the incoming requests to match with that key ? as i would be stuck with the same dilemma as now, since the uri as it's missing the "?" isn't treating the arguments as query string but part of the uri itself... 

There are no arguments. There is no query string. There is only the uri
(the location, in this case).

Can you describe what you want to happen when a client makes a request
of nginx?

I imagine it is something like "if nginx has the appropriate response
in cache send it; otherwise do something to populate the cache and send
the response". But I do not know what you think should populate the
cache in the first place.

Francis Daly        francis at

More information about the nginx mailing list