Technical Forum
Ask questions. Discover Answers.
cancel
Showing results for 
Search instead for 
Did you mean: 
Custom Alert Banner

Please help with irule for pool selection based on custom http header

sandman748
Nimbostratus
Nimbostratus

Hi all,

 

Could someone assist me with an irule that would look at a custom header callled X-Server-Pool. If "xyz" then this pool, if "abc" then this pool, else default.

 

I think this is a starting point but it doesnt appear to be working

 

  1. when HTTP_REQUEST {
  2. if { [HTTP::header exists X-SERVER-POOL] and [HTTP::header X-SERVER-POOL] equals "xyz" } {
  3. pool xyz
  4. } elseif [HTTP::header exists X-SERVER-POOL] and [HTTP::header X-SERVER-POOL] equals "abc" } {
  5. pool abc
  6. }
  7. }
  8. }

 

If no header exists it would hit default pool assigned to vip?

1 REPLY 1

Hi sandman748,

Can you look logs with this:

when HTTP_REQUEST {
	if { [HTTP::header exists X-SERVER-POOL] } {
		log local0. "X-Server-Pool: [HTTP::header X-SERVER-POOL]"
		
		switch [HTTP::header X-SERVER-POOL] {
			"xyz" { pool xyz }
			"abc" { pool abc }
		}
	}
}

If no header exists, it hits the default pool. If no default pool exists, it drops. You can add default pool configuration in iRule with using else or switch.

when HTTP_REQUEST {
	if { [HTTP::header exists X-SERVER-POOL] } {
		log local0. "X-Server-Pool: [HTTP::header X-SERVER-POOL]"
		
		switch [HTTP::header X-SERVER-POOL] {
			"xyz" { pool xyz }
			"abc" { pool abc }
			default { defaultpool }
		}
	}
}