Forum Discussion

adminas's avatar
adminas
Icon for Altocumulus rankAltocumulus
Jul 10, 2024

Need help with iRule based on host and path

Hello all. I am trying to create an iRule that will choose a specific pool based on host and path. I tried the following code: when HTTP_REQUEST {   if { [HTTP::host] equals "hostname_a"} {     i...
  • adminas's avatar
    Jul 11, 2024

    Finally, problem solved! The reason was the order of execution for the 2 scripts. I donot really understand why this happens but when I placed the script in second place, everything is executed as expected. If you have any ideas please let me know.

    The problematic order which doesnot work is shown below:

    First script:

    when HTTP_REQUEST {
      if { [HTTP::host] equals "hostname_a"} {
        if { [HTTP::path] equals "/path" } {

          pool pool_a
            log local0. "URL : [HTTP::host][HTTP::uri] entered"
        }
      }
      if { [HTTP::host] equals "hostname_b"} {
        if { [HTTP::path] equals "/path" } {

            pool pool_b
            log local0. "URL : [HTTP::host][HTTP::uri] entered"
        }
      } 
    }

     

    Second script:

    when HTTP_REQUEST {
    if {[HTTP::has_responded]}{return}
        switch -glob [string tolower [HTTP::path]]
        {

    ....

    ....

        }

        default
        {
                switch [string tolower [HTTP::host]]
                {

                     "hostname_a"

                     {

                       pool pool_c
                       persist none

                      }

    ....

    .....

                      default

                       {

                             pool_z

                       }

    ......

    Anyway, thank you all very much for your time.