Forum Discussion

Bhupendra's avatar
Bhupendra
Icon for Altocumulus rankAltocumulus
Nov 11, 2023

how to display maintenance banner via LTM policy

how to display maintenance banner via LTM policy if uri matches /example and tcp address is not private_net

Note: banner file (HTML ) is stored on ifile list.

  • Hi Bhupendra 
    Hope you are doing well.

    You coudl do it via iRule redirection to a sorry page OR you could provide it directly after matching your conditions as requested above.

    SOL1#
    --------------------------------------

    when HTTP_REQUEST {

    #create a data group adding allowed_ip_addresses to assign it here in iRule

    if { ([HTTP::uri] starts_with "/example") && (![class match [IP::client_addr] equals allowed_ip_addresses]) } {

    HTTP::redirect "http://www.corp_xyz.com/sorry_page.html

    log local0. "Client IP : [IP::client_addr] ==> sorrypage"

    }
    }

     

    SOL#2
    -----------------------

    when HTTP_REQUEST {

    #make sure to create a data group adding allowed_ip_addresses to assign it here in iRule

    if { ([HTTP::uri] starts_with "/example") && (![class match [IP::client_addr] equals allowed_ip_addresses]) } {

    HTTP::respond 200 content {
    <html>
    <head>
    <title>Apology Page</title>
    </head>
    <body>
    We are sorry, but the site you are looking for is temporarily out of service<br>
    If you feel you have reached this page in error, please try again.
    </body>
    </html>
    }
    }
    }

     

    • Bhupendra's avatar
      Bhupendra
      Icon for Altocumulus rankAltocumulus

      Hi , Thanks for your response.

      I have both  irule and LTM policy on same vip. 

      LTM policy rule -------->

      HTTP URI full string starts with '/example' at request time.

      Forward traffic to POOL A

      ---------------------------------------------------------------------------------

      Banner rule----->

      when HTTP_REQUEST {

      if { ([HTTP::uri] starts_with "/example") 

      HTTP::respond 200 content {
      <html>
      <head>
      <title>Apology Page</title>
      </head>
      <body>
      We are sorry, but the site you are looking for is temporarily out of service<br>
      If you feel you have reached this page in error, please try again.
      </body>
      </html>
      }
      }
      }

       I tried to put simple messgae on banner. It is not working. Always says site can not be reached.  connection reset message .I can see execution hits on irule without error. Also LTM logs i can see irule executed.

       

       

  • Just to clarify, you are looking for a maintenance page? When you say 'banner', it makes me think that you want to inject javascript or somerthing and put a banner atop the normally loaded page that provides an alert. That would be a separate and more difficult requirement of course. Simple maintenace page is no issues, and you can even store the HTML page, JS, and any images on the F5 itself using iFiles. Just some further thoughts here.

    • Bhupendra's avatar
      Bhupendra
      Icon for Altocumulus rankAltocumulus

      Hi Whisperer,

      Thanks for response.

      I am putting maintenance page. I tried to put simple html page or message. Also tried to put html page via ifile (HTTP::respond 200 content [ifile get "maintenance_Page"] even it is not working for me.

       

      when HTTP_REQUEST {

      if { ([HTTP::uri] starts_with "/example") 

      HTTP::respond 200 content {
      <html>
      <head>
      <title>Apology Page</title>
      </head>
      <body>
      We are sorry, but the site you are looking for is temporarily out of service<br>
      If you feel you have reached this page in error, please try again.
      </body>
      </html>
      }
      }
      }

      • whisperer's avatar
        whisperer
        Icon for MVP rankMVP

        Can you provide the output for the Virtual Server object? Also, what URL are you testing with in the web browser?