For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

zafer's avatar
zafer
Icon for Nimbostratus rankNimbostratus
Feb 05, 2010

uri based load balance

Hello

 

 

i'm using this iRule but i have problem.

 

 

The problem is when i request the url "www.domain.com/Touch" (it does not work) but if i add "/" at the end of the word it works (www.domain.com/Touch/)

 

 

i think web server is rewriting the url.The request change after the connect to the server www.domain.com/Touch/abc/index.jsp

 

 

 

i think if i add "/" after the word it will work, how can i do this or any suggestion

 

 

 

when HTTP_REQUEST {

 

set uri_info [HTTP::uri]

 

if { $uri_info starts_with "/Touch" or $uri_info starts_with "/cis" } {

 

pool pool_9081

 

} elseif { $uri_info starts_with "/Dispatch" } {

 

pool pool_9085

 

} else { HTTP::redirect "https://[HTTP::host][HTTP::uri]"

 

}

 

}

 

4 Replies

  • Hi Zafer,

     

     

    The following example code simply examines the URI for a "/" and if it does not it performs a redirect with "/" at the end.

     

     

     
     when HTTP_REQUEST { 
        if { [string tolower[HTTP::uri]] eq "/touch" } { 
           HTTP::redirect "http://[HTTP::host]/[HTTP::uri]/" 
        } 
     } 
     

     

     

    I hope this helps

     

     

    Bhattman
  • zafer's avatar
    zafer
    Icon for Nimbostratus rankNimbostratus
    it redirects request it is not load balance to the specific pool or member

     

     

    zafer
  • Hi Zafer,

     

    I think I miss understood. Here is another rework of the code

     

     

     

     

    Here is an example

     

     

     
     when HTTP_REQUEST { 
        set uri_info [strng tolower [HTTP::uri]] 
        switch -glob $uri_info { 
           "/touch" {  
                    HTTP::redirect "https://[HTTP::host][HTTP::uri]/" 
                    } 
           "/touch/*" - 
            /cis*" { 
                    pool pool_9081 
                   } 
           "/Dispatch*" 
                   { 
                    pool pool_9085 
                   } 
        } 
     } 
     

     

     

    I hope this helps

     

     

    Bhattman
  • zafer's avatar
    zafer
    Icon for Nimbostratus rankNimbostratus
    Hi

     

     

    in this implementation bigip will take webserver role from ibm server, load balance and redirect request to the specific pool

     

     

    my problem ;

     

    if client request type like this www.xx.com/touch (not works)

     

    www.xx.com/touch/ (it works)

     

     

    i worked with irule with these type solutions; append and rewrite url (append "/" and rewrite uri set uri $new_uri/) but i got another problems

     

     

    i use append "/" but irule append "/" in to the all url

     

    regarding rewrite url, "www.xxx.com/touch" rewrited to the "www.xxx.com/touch/" but after the login page bigip removes "/touch/" from url and we got some problems....

     

     

    i changed your irule with my requirements. is that solve my problems, can be loop problem redirection and load balance to the pool

     

     

     

    when HTTP_REQUEST {

     

    set uri_info [string tolower [HTTP::uri]]

     

    switch -glob $uri_info {

     

    "/touch" {

     

    HTTP::redirect "http://[HTTP::host][HTTP::uri]/" -----> add / to the url then

     

    }

     

    "/touch/*" {

     

    pool pool_9081 -------------- load balance the specific pool

     

    }

     

    "/cis" {

     

    HTTP::redirect "http://[HTTP::host][HTTP::uri]/"

     

    }

     

    "/cis/*" {

     

    pool pool_9081

     

    }

     

    "/Dispatch*"

     

    {

     

    pool pool_9085

     

    }

     

    }

     

    }