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.

Другие вопросы по тегам