Forum Discussion

sjy2025's avatar
sjy2025
Icon for Nimbostratus rankNimbostratus
Jul 22, 2025
Solved

iRule, Traffic Policy or Re-Write Policy

  Hi, I have created an iRule that maps source addresses to a particular pool when CLIENT_ACCEPTED { if {[class match [IP::client_addr] equals clients1] } {      pool POOL_1    } elseif {[class...
  • Injeyan_Kostas's avatar
    Injeyan_Kostas
    Sep 24, 2025

    you may see  https://hostnameA.test.com:666 in the browser for many reasons
    thats why I am asking if there is a redirect response (301 or 302) or there is something else

    anyway give this a try

    when HTTP_REQUEST 
    {
        STREAM::disable
        HTTP::header remove "Accept-Encoding"
    
    	if {[IP::addr [IP::client_addr] equals 192.168.1.1] } 
    	{
    		pool POOL_A
    		set selected_hostname "hostnameA.test.com"
    		HTTP::header replace Host $selected_hostname
    	} 
    	elseif {[IP::addr [IP::client_addr] equals 192.168.2.1] }
    	{
    		pool POOL_B
    		set selected_hostname "hostnameB.test.com"
    		HTTP::header replace Host $selected_hostname
    	} 
    	elseif {[IP::addr [IP::client_addr] equals 192.168.3.1] }
    	{
    		pool POOL_C
    		set selected_hostname "hostnameC.test.com"
    		HTTP::header replace Host $selected_hostname
    	}
    }
    
    when HTTP_RESPONSE 
    {
        if {[HTTP::header exists "Location"] && [info exists selected_hostname]}
        {
            set loc [HTTP::header "Location"]
            if {[string match "https://$selected_hostname:666*" $loc]} 
            {
                HTTP::header replace "Location" [string map "https://$selected_hostname:666 https://example.com" $loc]
            }
        }
        if {[HTTP::header "Content-Type"] contains "text" && [info exists selected_hostname]}
        {
    		STREAM::expression "@https://$selected_hostname@https://example.com@"
    		STREAM::enable
        }
    }