Forum Discussion

dihris_116090's avatar
dihris_116090
Icon for Nimbostratus rankNimbostratus
May 28, 2016
Solved

HTTP Rewrite header + pool based on URI

Hi, I need to forward traffic from external URL to one of our internal servers based on URI. That has to be transparent for the browser with no redirect messages 3xx. Searching in the forum and u...
  • Yann_Desmarest_'s avatar
    May 28, 2016

    Hi,

    here an rule example :

    when RULE_INIT {
        set external_hostname "externalsite.com"  
        set internal_hostname "internalsite.com"  
    }
    when CLIENT_ACCEPTED { 
        set default_pool [LB::server pool] 
    } 
    when HTTP_REQUEST {
         Disable the stream filter for requests
        STREAM::disable
    
         Remove this header to prevent server from compression response
        HTTP::header remove Accept-Encoding
    
        if { ([string tolower [HTTP::path]] eq "/foobar") } {
            HTTP::host [string map {$external_hostname $internal_hostname} [HTTP::host]] 
            pool internal_pool
        } else { 
            pool $default_pool
        }
    }
    when HTTP_RESPONSE {
         Rewrite the Location header for redirects 
        if { [HTTP::header exists Location] }{ 
            HTTP::header replace Location [string map {$external_hostname $internal_hostname} [HTTP::header Location]] 
        } 
    
         Rewrite the response content using a stream profile if it is text 
        if { [HTTP::header Content-Type] contains "text" } { 
    
             Set the stream expression with the find/replace strings 
            STREAM::expression "@xyz.company.com@abc.company.com@" 
    
             Enable the stream filter 
            STREAM::enable 
        } 
    }