我有一些http请求,例如下面的请求被发送到nginx服务器:
GET /app/handler?id=1234¶m1=cbd¶m2=234
现在,我想根据请求中的id参数将请求重写到不同的处理程序。例如。对于奇数ids,重定向到甚至ids的handler_even和handler_odd。如下所示:
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参数值重定向。知道我怎么能这样做吗?使用“if”是最好的方法吗?
任何指针都很有用
答案 0 :(得分:0)
您可以使用if
,而不是使用map
指令。要在内部重写URI,请使用:
map $arg_id $handler {
default /app/handler_even;
~[13579]$ /app/handler_odd;
}
server {
...
location = /app/handler {
rewrite ^ $handler last;
}
...
}
map
应与server
指令位于同一级别(如上所示),即位于http
容器内。
有关详细信息,请参阅this document。