Делается стандартно через
map (пишется в http секцию!):
map "$arg_q:$cookie_q" $my_upstream {
default 404;
"~^:(?<cookie>.+)$" $cookie;
"~^(?<get>.+):$" $get;
}
Тогда в нужном server можно использовать так:
server {
if ($my_upstream = 404) {
return 404;
}
...
proxy_pass http://$my_upstream;
Неплохо описание есть тут см. секцию "
Выбор upstream". Как раз под указанный случай.
Обращаю внимание, что в исходной ТЗ не рассмотрен вариант "есть и кука и гет параметр". Что тогда? В приведенном мною конфиге будет 404.