For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

walkman69's avatar
walkman69
Icon for Altostratus rankAltostratus
Mar 25, 2024
Solved

URL Distribution

I received a request as to the possibility to or distribute traffic for one url to multiple urls (round-robin, least connections, or even just randomly ) but never exceed 50 connections to each one. ...
  • JRahm's avatar
    JRahm
    Mar 26, 2024

    Not at all tested or optimized or secured against injection with the table commands, but to get the juices flowing I threw this together. Not 100% confident it'll work and I don't have time until end of the week to flesh out and test, but it is possible to achieve what you're after. That said, it'll be a support nightmare to grow with the needs of the business since it's not a well-defined problem or scale, so I would push back against this particular ask.

    when HTTP_REQUEST priority 500 {
        if { [string tolower [HTTP::path]] == "/form"} {
            foreach form [list form1 form2 form3 form4 form5 form6] {
                if { [table lookup $form] < 50 } {
                    table incr $form 1
                    HTTP::uri /$form
                    set current_form $form
                    break
                }
            }
        }
    }
    when HTTP_REQUEST priority 501 {
        if { [string tolower [HTTP::path]] == "/form" } {
            HTTP::respond 429 content "<html><body><p>All forms at max of 50 requests</p></body></html>" 
        }
    }
    when HTTP_RESPONSE {
        table incr $current_form -1
    }