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

Filter by:
  • Solution
  • Technology
Answers

iRule Host Header Pool

I'm new to F5 iRule scripting and I'm looking to simplify the following so we don't have to edit the iRule every time we add a new site and pool.

Current

when HTTP_REQUEST { if { [HTTP::host] eq "abc.123.com" } { pool abc.123.com } elseif { [HTTP::host] eq "def.123.com" } { pool def.123.com } elseif { [HTTP::host] eq "abc.456.com" } { pool abc.456.com } }

I would like to simplify this script so that what ever comes in is sent to the pool with out defining each one.

The pool name will always match the site. Example site: abc.123.com = pool: abc.123.com

Not sure how to write the script

when HTTP_REQUEST { if { [HTTP::host] eq "*.123.com" } { pool .123.com } elseif { [HTTP::host] eq ".456.com" } { pool *.456.com } }

0
Rate this Question

Answers to this Question

placeholder+image
USER ACCEPTED ANSWER & F5 ACCEPTED ANSWER

This is quick-and-dirty, and doesn't allow for the virtual server receiving a request with an invalid host header:

when HTTP_REQUEST {
  pool [HTTP::host]
}

If you want to get fancier, create a data group ("known_hosts", for example) whose entries are valid host names (and for which you've already created the corresponding pool).

when HTTP_REQUEST {
  if { [class match [HTTP::host] equals known_hosts] } {
    pool [HTTP::host]
  } else {
    # take appropriate action
  }
}
0
Comments on this Answer
Comment made 16-Aug-2017 by rwagner1 59

Thank you CharlesCS. That worked perfectly!

0