Назад | Перейти на главную страницу

Предоставлять данные из разных мест в зависимости от параметра запроса

Я хотел бы обслуживать данные на одном и том же хосте из разных каталогов в зависимости от параметра запроса с помощью Nginx.

Например https://foo.bar/index.html должен подаваться из /var/www/foo и https://foo.bar/index.html?baz=quux из /var/www/bar.

Я пытался сменить сервер root условно, но оказывается не поддерживается.

root /var/www/foo;    
if ($args ~ baz=quux) {
    # this is not gonna work but that is what is needed
    # root /var/www/bar;
}

Я не уверен, что это самый элегантный способ решить проблему, но с помощью переменной в root директива работает должным образом.

set $env 'foo';
if ($arg_baz=quux) {
    set $env 'bar';
}
root /var/www/$env;