Forum Discussion

7 Replies

  • Hi Frank,

    yes, you can do it with an iRule.

    when HTTP_REQUEST {

    if { [HTTP::uri] contains "abc" } {

     pool pool1
    

    } elseif { [HTTP::uri] contains "cde" } {

     pool pool2
    

    }

    }

  • Done some modification in above irule. Rest every thing is correct.

         when HTTP_REQUEST {
            if {[string tolower[HTTP::uri]] starts_with "/abc"} {
              pool pool1 }
            elseif {[string tolower[HTTP::uri]] starts_with "/def"} {
               pool pool2 }
        }
    
    • jurgenvdmark_14's avatar
      jurgenvdmark_14
      Icon for Nimbostratus rankNimbostratus

      Instead of using iRules, you can also use a ltm policy, which makes it more visible:

       

      Name: select_pool Requires: http Controls: forwarding

       

      Rule: forward_pool1 Condition: http-uri starts_with /abc Action: forward pool pool1 Rule: forward_pool2 Condition: http-uri starts_with /def Action: forward pool pool2

       

      It may require some more configuring then using an iRule but instead of using TCL code, you get an clear overview what the policy does.

       

  • thanks, there is another question. how do i setting local traffic VS's default pool? or don't need the default pool?

     

  • Assuming that you have configured default pool within the VS configuration, you can use an iRule like this modified from @jhass' iRule:

    when CLIENT_ACCEPTED {
    set DEFAULT_POOL [LB::server pool]
    }    
    
    when HTTP_REQUEST {
    if {[string tolower[HTTP::uri]] starts_with "/abc"} {
    pool pool1 
    } elseif {[string tolower[HTTP::uri]] starts_with "/def"} {
    pool pool2 
    } else { 
    pool DEFAULT_POOL
    }
    }