Lab goal
- When a clients asks for /cgi-bin/* change that to /alpha/a1.html, and serve it from SRV1
- Fix the 404 page not found.
Use VIP 10.136.6.13.
Setup
The loadbalancer is Radware's Alteon VA version 29.5.1.0
The initial Alteon VA configuration can be found here.
Notice the group and hosts are preconfigured:
Notice the group and hosts are preconfigured:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /c/slb/real 1 ena ipver v4 rip 10.136.85.1 /c/slb/real 2 ena ipver v4 rip 10.136.85.2 /c/slb/real 3 ena ipver v4 rip 10.136.85.3 /c/slb/group 10 ipver v4 add 1 add 2 add 3 |
Alteon configuration
Lets first create the VIP/virt and test it out.
1 2 3 4 5 | /c/slb/virt 6_13 ena vip 10.136.6.13 /c/slb/virt 6_13/service 80 http group 10 |
To fix the 404 at the bottom of the webpage, we need to change the request URL from /not_here to /here.html.
So lets write the AppShape++ script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | attach group 10 when HTTP_REQUEST { # retrieve URL from the request set url [HTTP::uri] # check if URL begins with /cgi-bin/ if {[string match "/cgi-bin/*" $url] == 1} { # change the URL and select SRV1 HTTP::uri "/alpha/a1.html" group select 10 server 1 # check if the request is for /not_here } elseif {[string match "/not_here" $url] == 1} { # change the URL to here.html HTTP::uri "/here.html" } } -----END |
- Line 1 - declare that we are about to use group 10.
- Lines 3 - 17 - When HTTP_REQUEST comes from the client to the VIP do this:
- Line 5 - Retrieve the URL
- Lines 8-13 - Check if the URL begins with /cgi-bin/ if so:
- Lines 10-11 - Send the request to the web server as "/alpha/a1.html" and select SRV1.
- Lines 13-16 - Check if the URL is not_here if so:
- Line 15 - Send the request to the web server as "here.html"
Now lets apply this script to the Alteon:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /c/slb/appshape/script set_url ena import text attach group 10 when HTTP_REQUEST { # retrieve URL from the request set url [HTTP::uri] # check if URL begins with /cgi-bin/ if {[string match "/cgi-bin/*" $url] == 1} { # change the URL and select SRV1 HTTP::uri "/alpha/a1.html" group select 10 server 1 # check if the request is for /not_here } elseif {[string match "/not_here" $url] == 1} { # change the URL to here.html HTTP::uri "/here.html" } } -----END /c/slb/virt 6_13/service 80 http/appshape add 10 set_url |
- Lines 1-19 - importing the script
- Lines 21-22 - applying the script to the VIP
Test
Before:
After:
Success!
Notice how the CGI script, which shows connection data (it just prints ENV vars), changed to show a static page from SRV1 and also notice that the 404 is fixed.
Summary
Setting the URL is really easy, once you know how.... :)