F5 BIG-IP 10.2.4
Мой iRule должен точно соответствовать хосту и подстановочному знаку на пути.
when HTTP_REQUEST {
switch [string tolower [HTTP::host]] {
"internal.mycompany.com" {
switch -glob [string tolower [HTTP::path]] {
"/api1/*" {
Это оптимизировано как есть? Обеспечит ли реструктуризация как единый iRule дальнейшую оптимизацию?
set $host [string tolower [HTTP::host]]
set $path [string tolower [HTTP::path]]
set $host-uri = "$host/$path"
when HTTP_REQUEST {
switch -glob [$host-uri] {
"internal.mycompany.com/api1/*" {
Это зависит. Сколько доменных имен у вас на VIP? Если более одного, сколько URI под доменным именем у вас будет?
Если он будет выделен и вы будете обновлять его довольно часто, я бы предложил использовать группу данных, чтобы вам не приходилось постоянно изменять iRule. В противном случае это 6 из одного, полдюжины другого.
Что-то вроде ...
when HTTP_REQUEST {
set URL [string tolower [HTTP::host][HTTP::uri]]
if {[class match $URL starts_with some_data_group]} {
<some_action_based_on_DG_value> [class match -value $URL starts_with some_data_group]
}
}
Значением для элемента группы данных может быть URL-адрес перенаправления, пул, метод сохранения и т. Д.
Еще одно небольшое примечание; поскольку ваши операторы set выполняют команды irule, они должны находиться в контексте допустимого события (то есть [HTTP :: host] должен находиться внутри «when HTTP_REQUEST»).