Forum Discussion

gpayne_144568's avatar
gpayne_144568
Icon for Nimbostratus rankNimbostratus
Sep 29, 2014

Switch Irule

I need to create an IRULE that takes a certain uri and redirects based on the start to specific pools. Would like to do this in switch format.

 

Any suggestions.

 

3 Replies

  • Hi mate,

    You can give something like the following a shot:

    when HTTP_REQUEST {
    set uri [string tolower [HTTP::uri]]
    switch -glob $uri {
        "/somepath/dir1*" -
        "/somepath/dir2*" {
        pool POOL_my.site.com-443
          }
    default { 
         pool POOL_your.site.com-443
        }
    }
    }
    
  • Ok here is what I have. It is very ineffecient and I want to change it to work. I know I could do and if/elseif to clean it up. Would prefer to do switch with the log statement.

     

    Change debug to 1 to enable logging

    when HTTP_REQUEST { set static::DEBUG 0

     

    if {[string tolower [HTTP::path]] starts_with "/XXXX"}{ pool XXX---xxxx-x-xxxxx.xxxx.xxxx.xxx---POOL---8095 } if {[string tolower [HTTP::path]] starts_with "/xxx/xxxx"}{ pool XXX---xxxx-x-xxxxx.xxxx.xxxx.xxx---POOL---8095 } if {[string tolower [HTTP::path]] starts_with "/xxx/xxxx"}{ pool XXX---xxxx-x-xxxxx.xxxx.xxxx.xxx---POOL---8095 } if {[string tolower [HTTP::path]] starts_with "/xxx/xxxx"}{ pool XXX---xxxx-x-xxxxx.xxxx.xxxx.xxx---POOL---8095 if { $static::DEBUG != 0 } { log local0. "for [IP::client_addr] Pool was selected and directed to port 8095" } } }

     

  • something like this?

    when HTTP_REQUEST {
    set static::DEBUG 1
    
    set uri [string tolower [HTTP::uri]]
    switch -glob $uri {
        "/XXXX*" -
        "/xxx/xxxx*" {
        if { $static::DEBUG != 0 } { 
        log local0. "for [IP::client_addr] Pool was selected and directed to port 8095"
        }
        pool XXX---xxxx-x-xxxxx.xxxx.xxxx.xxx---POOL---8095
        }
        default { 
            pool my.default.pool
        }
      }
    }