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

luyenntk50db's avatar
luyenntk50db
Icon for Nimbostratus rankNimbostratus
Jan 29, 2021

Using an iRule to display a maintenance page when the pool is down

I have configured to redirect Virtual server to maintenance page when all pool member down.

I have configured below guide:

https://support.f5.com/csp/article/K14702105

When i used irule below, Irule has completed configuration.

when HTTP_REQUEST { 

   if { [active_members [LB::server pool]] == 0 } { 

     HTTP::respond 200 content "

      <html>

         <head>

            <title>Maintenance Page</title>

         </head>

         <body>

            We are sorry, but the site you are looking for is temporarily out of service.

            If you feel you have reached this page in error, please try again.

         </body>

      </html>

      "

   }

}

But, when I edited as below, irule has not change:

when HTTP_REQUEST { 

  if { [active_members [LB::server pool]] == 0 } {

   HTTP::respond 200 content "

   <html>

     <head>

      <title>Maintenance Page</title>

     </head>

     <body>

     <article>

       <center><h1 style="color: #000;">

      Xin lỗi quý vị, hệ thống đang được bảo trì. Xin quý vị quay lại sau khi bảo trì hoàn tất.</h1> <center>

      <div>

    <center><h1 style="color: #000;">Xin trân trọng cảm ơn!.<p></p><center>

    </center></h1></center></div>

     <article>

     </body>

   </html>

   "

  }

}

Errors as below:

 

 

Pls guide me!

3 Replies

  • Hi

    Try changing the " " to group the HTML to { } braces instead as per the error. Suspect the " in the style lines are causing a conflict.

    when HTTP_REQUEST { 
     
      if { [active_members [LB::server pool]] == 0 } {
     
       HTTP::respond 200 content {
     
       <html>
     
         <head>
     
          <title>Maintenance Page</title>
     
         </head>
     
         <body>
     
         <article>
     
           <center><h1 style="color: #000;">
     
          Xin lỗi quý vị, hệ thống đang được bảo trì. Xin quý vị quay lại sau khi bảo trì hoàn tất.</h1> <center>
     
          <div>
     
        <center><h1 style="color: #000;">Xin trân trọng cảm ơn!.<p></p><center>
     
        </center></h1></center></div>
     
         <article>
     
         </body>
     
       </html>
     
       }
     
      }
     
    }
  • OK - so you could either move your html code to a variable and then make a call to it like this

     

    when RULE_INIT {
     
    set static::sorry_code {
    <html>
     
         <head>
     
          <title>Maintenance Page</title>
     
         </head>
     
         <body>
     
         <article>
     
           <center><h1 style="color: #000;">
     
          Xin lỗi quý vị, hệ thống đang được bảo trì. Xin quý vị quay lại sau khi bảo trì hoàn tất.</h1> <center>
     
          <div>
     
        <center><h1 style="color: #000;">Xin trân trọng cảm ơn!.<p></p><center>
     
        </center></h1></center></div>
     
         <article>
     
         </body>
     
       </html>
     
     
    }
     
    }
     
     
    when HTTP_REQUEST { 
     
      if { [active_members [LB::server pool]] == 0 } {
     
       HTTP::respond 200 content $static::sorry_page
     
      }
     
    }

    ...or you could try moving the html code to an iFile - https://clouddocs.f5.com/api/irules/iFile.html - if there are any strange characters in the html code that is causing a conflict then this method should resolve these issues