Redirect nginx中基于参数的重定向

Redirect nginx中基于参数的重定向,redirect,nginx,lua,proxypass,Redirect,Nginx,Lua,Proxypass,我有http请求,例如下面的一个被发送到nginx服务器: GET /app/handler?id=1234&param1=cbd&param2=234 现在,我想根据请求中的id参数将请求重写为不同的处理程序。例如,对于偶数ID重定向到handler_偶数,对于奇数ID重定向到handler_奇数。如下所示: GET /app/handler?id=1234&param1=cbd&param2=234 => /app/handler_even?id=12

我有http请求,例如下面的一个被发送到nginx服务器:

GET /app/handler?id=1234&param1=cbd&param2=234
现在,我想根据请求中的id参数将请求重写为不同的处理程序。例如,对于偶数ID重定向到handler_偶数,对于奇数ID重定向到handler_奇数。如下所示:

GET /app/handler?id=1234&param1=cbd&param2=234 => /app/handler_even?id=1234&param1=cbd&param2=234
GET /app/handler?id=123&param1=cbd&param2=234 => /app/handler_odd?id=123&param1=cbd&param2=234
我可以使用proxy_pass进行重写,但我不确定如何使用id参数值重定向。你知道我该怎么做吗?使用“如果”是最好的方法吗


任何指针都是有用的

而不是使用
指令。如果
指令,则可以使用
映射
。要在内部重写URI,请使用:

map $arg_id $handler {
    default /app/handler_even;
    ~[13579]$ /app/handler_odd;
}

server {
    ...
    location = /app/handler {
        rewrite ^ $handler last;
    }
    ...
}
映射
应位于与
服务器
指令(如上所示)相同的级别,即位于
http
容器内


有关详细信息,请参阅。

重定向或重写?重写。更改了问题以反映这一点。最终用户永远不知道他/她被重定向到哪个处理程序。