Forum Discussion
irule
I want to put below condition on irule, please help
1. If source IP matches and URI is /A and /B traffic should be forwarded to POOL A
2. If user is accessing /C-new, rewrite URI to /C and forward to POOL A
3. if not matches 1 and 2 condition defalut POOL B
Hi Bhupendra ,
in Step 2 of rewrite >>> do you need the source ip matches as well or Not ?
So you need to match on specific source IP address/address first and then match /A or /B then move traffic to pool A but if the same match on source ip address/addresses but with uri starts with /c-new modify it to be /C and forward traffic to pool A
if non of those forward to pool B
that's Correct ?Maybe think about using a local traffic policy rather than an iRule. It will be more efficient and easier for you to manage
Hi Bhupendra ,
As PeteWhite recommended , yes it's eaiser than iRule and will give you the same result.
it should be like this :>>> Note that , the last condition "3rd match " should be All Traffic and then do those Actions ( Log and Forward to default pool )
This is an overview about Local Traffic policy :
https://techdocs.f5.com/kb/en-us/products/big-ip_ltm/manuals/product/local-traffic-policies-getting-started-12-1-0/1.html
Goodluck
7 Replies
Hi Bhupendra ,
in Step 2 of rewrite >>> do you need the source ip matches as well or Not ?
So you need to match on specific source IP address/address first and then match /A or /B then move traffic to pool A but if the same match on source ip address/addresses but with uri starts with /c-new modify it to be /C and forward traffic to pool A
if non of those forward to pool B
that's Correct ?- Bhupendra
Altocumulus
in Step 2 of rewrite >>> do you need the source ip matches as well or Not ? ------- >>>>No we don't want to match source IP here only URI with any source.
So you need to match on specific source IP address/address first and then match /A or /B then move traffic to pool A but if the same match on source ip address/addresses but with uri starts with /c-new modify it to be /C and forward traffic to pool A
if non of those forward to pool B
that's Correct ? ----------------->>First condition match on specific source IP address/address first then match URI /A or /B for selected source IPs then move traffic to pool ASecond condition -any source with uri starts with /c-new modify it to be /C and forward traffic to pool A
If no condition match from 1&2 then default traffic should be route POOL B
Hi Bhupendra ,
Use this irule :when HTTP_REQUEST { if { ( [IP::addr [IP::client_addr] equals x.x.x.x ] ) and ( ([HTTP::uri] starts_with "/A") or ([HTTP::uri] starts_with "/B" ) ) }{ log local0. " First Condition matched >>>> GO TO POOL A 🙂 " pool POOL_A } elseif { ( [HTTP::uri] starts_with "/C-new" ) }{ HTTP::uri [string map -nocase {"/C-new " "/C"} [HTTP::uri]] log local0. " 2nd Condition matched (String MAP did it work ) >>>> GO TO POOL A 🙂 " pool POOL_A } else { log local0. " 3rd Condition matched ( Default path ) >>>> GO TO POOL B 🙂 " return } }Don't forget to assign POOL_B as a default pool in Virtual server resources , to forward traffic in case the last condition ( Default ) triggered.
>> Also Make sure that there are no multiple requests are sent for each web page.
I mean :
if you sent req like this http://10.10.10.10/A by the specified source address it should be forwarded correct to pool_A.
But what if at the same time your web page needs multiple requests like http://10.10.10.10/image.phpso make sure you send only single request per page.
Goodluck
- PeteWhite
Employee
Maybe think about using a local traffic policy rather than an iRule. It will be more efficient and easier for you to manage
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com