Forum Discussion

pjcampbell_7243's avatar
Aug 26, 2009

404 error using image pool iRule

We are intermittently getting an "404" error instead of a blank box or box with an X on it on our pages when using the following iRule

 

 

 

 

when HTTP_REQUEST {

 

if { [HTTP::path] ends_with ".jpg" }{

 

pool images.xyz.com

 

}

 

 

That is to say we will be surfing on some .jsp page, and a missing image will cause the user to be stopped dead on a 404 error, rather than the image simply not showing up within the .jsp page.

 

 

Any thoughts as to why this would happen?

 

4 Replies

  • I'd guess the issue is that a request that should go to the default pool on the VIP is going to the image pool. You could explicitly add a default case to the iRule or add a OneConnect profile to the virtual server to prevent this.

      
     when CLIENT_ACCEPTED {  
         Save default pool name  
        set default_pool [LB::server pool]  
     }  
     when HTTP_REQUEST {  
        if { [HTTP::path] ends_with ".jpg" }{  
           pool images.xyz.com  
        } else { 
           pool $default_pool 
        } 
     }  
     

    For details on OneConnect and pool selection you can review Deb's articles linked from this post:

    http://devcentral.f5.com/Default.aspx?tabid=53&view=topic&postid=30865&ptarget=30875

    and here:

    http://devcentral.f5.com/Default.aspx?tabid=53&forumid=5&tpage=1&view=topic&postid=3392157229

    Aaron
  • Well the usual case is that that the request is going to a server in the pool that doesn't contain the image.

     

     

    Thanks,

     

    Chetan

     

  • Thanks for the suggestions. I tried adding the default pool to the iRule, and we are still getting stray non .jpg files getting passed over to the image pool. We have OneConnect on the http virtual server, but not on the https virtual server. I can't really confirm if the stray requests are coming from the http or https virtual (SSL offloaded to the BIG-IP). Should I try enabling oneconnect on the https virtual server?
  • Can you add some debug to the iRule and try to reproduce the issue?

     
      when CLIENT_ACCEPTED {   
          Save default pool name 
         set default_pool [LB::server pool] 
      }   
      when HTTP_REQUEST {   
      
         log local0. "[IP::client_addr]:[TCP::client_port]: New HTTP request to [HTTP::host][HTTP::uri]" 
         if { [HTTP::path] ends_with ".jpg" }{   
            log local0. "[IP::client_addr]:[TCP::client_port]: Matched jpg check, using images.xyz.com pool" 
            pool images.xyz.com 
         } else {  
            log local0. "[IP::client_addr]:[TCP::client_port]: Using default pool" 
            pool $default_pool  
         }  
      }   
      when LB_SELECTED { 
         log local0. "[IP::client_addr]:[TCP::client_port]: Pool info: [LB::server]" 
      } 
      when SERVER_CONNECTED { 
         log local0. "[IP::client_addr]:[TCP::client_port]: Connection info: [IP::server_addr]:[TCP::server_port]" 
      } 
     

    Can you also post the VIP and profile configuration using 'b virtual VIP_NAME list' and 'b profile PROFILE_NAME list'. Please anonymize the IP addresses and hostnames from the config and logs.

    Thanks,

    Aaron