Learn F5 Technologies, Get Answers & Share Community Solutions Join DevCentral

Filter by:
  • Solution
  • Technology
Answers

irule for virtual server to redirect to different pool

Well.....This doesn't work. Any help would be much appreatiated.


when HTTP_REQUEST {

 if { [HTTP::uri] contains "mywebsite.com/util" } {

 pool my-util-pool

 }  }

}


 

0
Rate this Question

Answers to this Question

placeholder+image
USER ACCEPTED ANSWER & F5 ACCEPTED ANSWER
Hi,

If I help do I get a discount on my utilities? :)

Can you try this example which checks the combined host header and path values set to lower case to select the pool? The non-matching requests will use the virtual server's default pool.


when CLIENT_ACCEPTED {
	# Save the name of the VS default pool
	set default_pool [LB::server pool]
}
when HTTP_REQUEST {

	switch -glob [string tolower [HTTP::host][HTTP::path]] {
		"*mywebsite.com/util*" {
		"*seattle.gov/util*" } {
			pool spu-util-pool
		}
		default {
			pool $default_pool
		}
	}
}


Aaron
0
placeholder+image
USER ACCEPTED ANSWER & F5 ACCEPTED ANSWER
Getting error when trying to update.

01070151:3: Rule [spu-util-pool-redirect] error: line 2: [undefined procedure: LB::dmz-lgxdev-pool-http] [LB::dmz-lgxdev-pool-http] line 9: [undefined procedure: default] [default { pool dmz-lgxdev-pool-http }] line 13: [command is not valid in the current scope] [}]

This is what I entered


when CLIENT_ACCEPTED {
set default_pool [LB::dmz-lgxdev-pool-http]
}
when HTTP_REQUEST {
switch -glob [string tolower [HTTP::host][HTTP::path]] {
"*seattle.gov/util*" } {
pool spu-util-pool
}
default {
pool dmz-lgxdev-pool-http
}
}
}
0
placeholder+image
USER ACCEPTED ANSWER & F5 ACCEPTED ANSWER
[LB::server pool] will return the default pool on the virtual server, so you don't need to update the name or hardcode the pool name in the iRule. Just set spu-util-pool to the name of the pool you want to use for the matching requests.

Aaron
0
placeholder+image
USER ACCEPTED ANSWER & F5 ACCEPTED ANSWER
I'm sorry for so many questions....I'm an irule dummy.

Does this look right?

when HTTP_REQUEST {
switch -glob [string tolower [HTTP::host][HTTP::path]] {
"*seattle.gov/util*" } {
pool spu-util-pool
}

}
0
placeholder+image
USER ACCEPTED ANSWER & F5 ACCEPTED ANSWER
No worries. Try exactly this:

when CLIENT_ACCEPTED {
    # Save the name of the VS default pool
    set default_pool [LB::server pool]
}
when HTTP_REQUEST {

    switch -glob "[string tolower [HTTP::host][HTTP::path]]" {
        "*seattle.gov/util*" {
            pool spu-util-pool
        }
        default {
            pool $default_pool
        }
    }
}


Aaron
0
placeholder+image
USER ACCEPTED ANSWER & F5 ACCEPTED ANSWER
I am so close..................I only get one error when I try to update.

01070151:3: Rule [spu-util-pool-redirect] error: line 11: [undefined procedure: default_pool] [default_pool ]

I have tried many [ and { but nothing seems to be good enough.
0
placeholder+image
USER ACCEPTED ANSWER & F5 ACCEPTED ANSWER
Sorry, I had a typo in the iRule above. I edited the post to fix it.

Aaron
0