Рейтинг:0

Как получить значение переменной в split_clients NGINX

флаг pl

я использую [split_clients] и это работает отлично в большинстве случаев.

Ссылка: https://nginx.org/en/docs/http/ngx_http_split_clients_module.html

split_clients возвращает буквально строку для дальнейшего использования.

Но теперь мне нужна возвращаемая строка, содержащая переменную, например:

http контекст:

split_clients "${remote_addr}${http_user_agent}${date_gmt}" $my_variable {
    20% https://example.com/fixed_string/another_fixed_string;
    * https://example.com/$1/another_fixed_string;
}

сервер контекст:

расположение ~ ^/abc/(.*) {
   переписать ^/abc/(.*) $my_variable redirect;
}

когда я посещаю https://example.org/abc/что-то, он перенаправляет на https://example.com/$1/another_fixed_string с $1 буквально строка в URL.

мое ожидание $1 действует как переменная, и ее значение равно что-нибудь, затем перенаправить на https://example.com/something/another_fixed_string

Как это реализовать?

флаг pl
Есть ли способ заменить строку, что-то вроде `str_replace("$1", $1, $my_variable)`?. Это сработает, если это возможно.
Gerard H. Pille avatar
флаг in
Объединить split_clients с картой?
флаг pl
@GerardH.Pille, спасибо, это работает. Вы спасли мой день!
Рейтинг:0
флаг pl

Как предложил @Gerard H. Pille, используя карта может решить эту проблему.

http контекст:

split_clients "${remote_addr}${http_user_agent}${date_gmt}" $my_variable {
    20% 0;
    * 1;
}

карта $my_variable $my_url {
   #default вы также можете установить значение по умолчанию

   0 https://example.com/fixed_string/another_fixed_string;
   1 https://example.com/$1/another_fixed_string;
}

сервер контекст:

расположение ~ ^/abc/(.*) {
   переписать ^/abc/(.*) $my_url redirect;
}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.