f5 bigip irule - перенаправление http и изменение пула
Я довольно новичок в написании бигпипов F5, поэтому со мной все в порядке. Мой нынешний язык - это;
when HTTP_REQUEST {
if {[HTTP::uri] starts_with "/xxxx"} {
HTTP::redirect https://example.com/yyyy
}
if {[HTTP::uri] starts_with "/zzzz"} {
HTTP::redirect https://example.com/bbbb
}
}
Это работает так, как мы ожидаем. У нас есть виртуальный сервер на https://example.com/ который имеет пул (называемый скажем poolA, с узлом под названием nodeA).
Что мы хотим сделать, это изменить существующий канал, чтобы он не только перенаправлял, но и изменял пул. Я попробовал следующее;
when HTTP_REQUEST {
if {[HTTP::uri] starts_with "/xxxx"} {
HTTP::redirect https://example.com/yyyy
poolB
}
if {[HTTP::uri] starts_with "/zzzz"} {
HTTP::redirect https://example.com/bbbb
poolB
}
}
Узел B в poolB имеет веб-сервер, прослушивает правильный порт и имеет веб-сайт, который соответствует URL-адресу направления.
Если я перехожу на https://example.com/xxxx в Chrome, я получаю следующую ошибку;
ошибка слишком много перенаправлений
1 ответ
Я бы пошел с выключателем в этом случае. Если вы перенаправляете, вам не нужно устанавливать пул, потому что этот запрос не будет передан члену пула.
when HTTP_REQUEST {
switch -glob [string tolower [HTTP::uri]] {
"/xxxx*" { HTTP::redirect https://example.com/yyyy }
"/zzzz*" { HTTP::redirect https://example.com/bbbb }
"/yyyy*" -
"/bbbb*" { pool poolB }
}
}
У нас есть много отличных уроков по DevCentral. Вот первая статья из серии из десяти статей о iRules под названием The101.