Forum Discussion

sally_calvert_8's avatar
sally_calvert_8
Icon for Nimbostratus rankNimbostratus
Nov 25, 2014

irule execution sequence

I have two tests to perform. If the first rule is enacted, I don't want the second one to happen - how do I order the rules or combine them to make sure they both don't apply to the same request?

rule portal-8080 {

when HTTP_REQUEST {

if { [HTTP::host] eq "portal.com" } {

pool portal.8080-only

} else {

pool poolb

}

rule http2https

when HTTP_REQUEST { HTTP::redirect https://[HTTP::header host][HTTP::uri]}

}

}

virtual hpssopro_80 {

destination 10.10.10.15:http

rules portal-8080  http2https

11 Replies

  • there are a couple of options. first is to use event disable command. event   https://clouddocs.f5.com/api/irules/event.html second is to set variable in one event/irule and then check it in another event/irule (to decide whether event/irule will be executed or not).
  • I did check out both those. Basically, if the fqdn matches, I don't want the http-to-https redirect to happen- just looking for confirmation that this is what that does. I don't have a test device to try it out on.

     

    thanks

     

  • oh wait - will this one do what I want above?

     

    b rule portal-8080-redirect '{ when HTTP_REQUEST { if { [HTTP::host] eq "portal..us" } { pool portal-8080-only } else { when HTTP_REQUEST { HTTP::redirect https://[HTTP::header host][HTTP::uri]} } } }'

     

    • shaggy's avatar
      shaggy
      Icon for Nimbostratus rankNimbostratus
      remove the second "when HTTP_REQUEST", and i think it will do what you are looking for
    • nitass's avatar
      nitass
      Icon for Employee rankEmployee
      and change from HTTP::redirect https://[HTTP::header host][HTTP::uri] to HTTP::redirect https://[HTTP::host][HTTP::uri]
  • so I got a chance to test, and it doesn't work - I put in a log local0, and see that the HTTP::host is exactly what I am expecting, but the pool selection doesn't trigger. What other ideas do you all have?

     

    b rule portal-8080-redirect '{ when HTTP_REQUEST { if { [HTTP::host] eq "portal.somestate.us" } { pool portal-8080-only } else { HTTP::redirect https://[HTTP::host][HTTP::uri] }}}'

     

  • I put in a log local0, and see that the HTTP::host is exactly what I am expecting, but the pool selection doesn't trigger.

     

    how do you know? have you checked tcpdump?

     

  • this would be one of those "duh" moments...the pool was down!! So I got the rule working, and thank all of you for you help on this one!