Forum Discussion

MatthewStyles_3's avatar
MatthewStyles_3
Icon for Nimbostratus rankNimbostratus
Mar 20, 2017

iRule for custom traffic flow

Hi!   We currently have a setup where we have a HTTPS website which customers can upload both text and media (Sound or video) to a server and this data is stored in the cloud. This data is then p...
  • Jeremy_Church_3's avatar
    Mar 20, 2017

    Matt,

    To perform this action, there are a couple things you need.

    1. Client-ssl and server-ssl profile on the virtual server.
    2. Identify requests with content.

    Here is a simple example iRule that should accomplish what you need. I'm working under the assumption any POST will have content you want to inspect.

    when HTTP_REQUEST {
        if {![info exists DEFAULT_POOL]} { set DEFAULT_POOL [LB::server pool] }
    
        set INSPECT 0
        if {[HTTP::method] eq "POST"} {
             request should contain conent, select server the inspection pool
            pool inspection_servers
            set INSPECT 1
        } else {
            pool $DEFAULT_POOL
        }
    }
    when SERVER_CONNECTED {
         do not encrypt server-side if destined to inspection pool
        if {$INSPECT} { SSL::disable }
    }
    

    If you use a OneConnect profile, you should be able to remove the default pool selection as long as you're not running 11.5.3 HF2 or 12.0.0 - 12.0.0 HF3.

    when HTTP_REQUEST {
        set INSPECT 0
        if {[HTTP::method] eq "POST"} {
             request should contain conent, select server the inspection pool
            pool inspection_servers
            set INSPECT 1
        }
    }
    when SERVER_CONNECTED {
         do not encrypt server-side if destined to inspection pool
        if {$INSPECT} { SSL::disable }
    }
    

    As with anything, there is often more than one answer. Hopefully this will at least point you in the right direction.