Forum Discussion

Aabuitrago's avatar
Aabuitrago
Icon for Altostratus rankAltostratus
May 06, 2020

LTM Masking URI

Hi everyone,

 

 

I'm trying to load balance tableau service.

 

I'm currently using apps.domain.com/ for multiple applications. The Vserver has an irule configured that assigns a different pool depending on the uri that the user specifies.

 

Example

apps.domain.com/app1

pool1

apps.domain.com/app2

pool2

 

I want to add tableau to the same vserver like this apps.domain.com/tableau but tableau doesn't use a uri, and the load of the application fails.

 

How can i mask tableau service using the uri /tableau even if in the tableau server that uri doesn't exist.

 

regards,

 

 

  • Question: would you need to rewrite responses from the tableau server?

    If you do not need to replace values within the server response, then devcentral has an article about URI masking

     

    If you follow the exampl from the article: Your irule will likely get a performance benefit from using HTTP::path instead of HTTP::uri. It is just less characters to process, no huge benefit.

  • Hi,

     

    Thank you for your prompt response.

    For tableau to work correctly, it use multiple URI's.

     

    some of those are:

    server01/#

    server01/vzql

    server01/t

     

    How can i modify the iRule code to work for what I need

     

     when HTTP_REQUEST {

     set HOST [string tolower [HTTP::host]]

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

     if { $HOST contains "devtest.domain.com" } {

     #Disable SSL

     SSL::disable serverside

     }

     if { $URI contains "/wdev/wweb.ll?wsession" } {

     HTTP::uri [string map {/wdev/wweb.ll?wsession /wdev/wweb.ll?FoldSession} [HTTP::uri]]

     pool POOL-DEV2

     }

     }

     when HTTP_RESPONSE {

     if { [HTTP::header values Location] contains "/wdev/wweb.ll?FoldSession" } {

     HTTP::header replace Location [string map {/wdev/wweb.ll?FoldSession /wdev/wweb.ll?wsession} [HTTP::header value Location]]

     }

     }