Redirect nginx中基于参数的重定向
我有http请求,例如下面的一个被发送到nginx服务器:Redirect nginx中基于参数的重定向,redirect,nginx,lua,proxypass,Redirect,Nginx,Lua,Proxypass,我有http请求,例如下面的一个被发送到nginx服务器: GET /app/handler?id=1234¶m1=cbd¶m2=234 现在,我想根据请求中的id参数将请求重写为不同的处理程序。例如,对于偶数ID重定向到handler_偶数,对于奇数ID重定向到handler_奇数。如下所示: GET /app/handler?id=1234¶m1=cbd¶m2=234 => /app/handler_even?id=12
GET /app/handler?id=1234¶m1=cbd¶m2=234
现在,我想根据请求中的id参数将请求重写为不同的处理程序。例如,对于偶数ID重定向到handler_偶数,对于奇数ID重定向到handler_奇数。如下所示:
GET /app/handler?id=1234¶m1=cbd¶m2=234 => /app/handler_even?id=1234¶m1=cbd¶m2=234
GET /app/handler?id=123¶m1=cbd¶m2=234 => /app/handler_odd?id=123¶m1=cbd¶m2=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
容器内
有关详细信息,请参阅。重定向或重写?重写。更改了问题以反映这一点。最终用户永远不知道他/她被重定向到哪个处理程序。