转几个 Big-IP f5 的iRule

 

a、

  1. iRule name: Redirect_when_Busi_Down    
  2. #当业务功能Pool里没有活动成员时,则转向到信息发布Pool   
  3. when LB_FAILED {   
  4.   #如果当前Pool中没有active的成员时才进行转换   
  5.   if { [active_members BUSI_HTTP_POOL] == 0 } {   
  6.     set DEBUG 1   
  7.     set internal_host "145.24.216.106";       #网站内网地址    
  8.      set external_host "www.shineauto.cn";  #网站域名    
  9.      set msg_url "/common/xtwh.do";            #错误提示URL   
  10.     set internal_IP "145.24.216";             #认为是内网地址的关键字   
  11.      set cip [IP::client_addr];                #客户端IP    
  12.     set host $external_host;                  #要转向的服务器地址    
  13.   
  14.     #如果客户端IP包含 $internal_IP (内部IP),则使用内部IP进行转向;   
  15.     #否则认为是外部用户,使用域名进行转向   
  16.      if { $cip starts_with $internal_IP }{   
  17.       set host $internal_host   
  18.     } else {   
  19.       set host $external_host   
  20.     }   
  21.     if { $DEBUG } {   
  22.       log local0. "URL:  http://$host/$msg_url"   
  23.     }   
  24.     HTTP::fallback "http://$host/$msg_url"   
  25.   } else {   
  26.     #如果当前Pool中还有Active的member,则重新选择   
  27.     LB::reselect   
  28.   }   
  29. }   

 b、

  1. ##====================================    
  2. #这是测试rule   
  3. when HTTP_REQUEST {   
  4.   set DEBUG 1   
  5.   if { $DEBUG } {   
  6.     set internal_IP "145.24.216";             #认为是内网地址的关键字   
  7.     set cip [IP::client_addr];                #客户端IP    
  8.     if { $cip starts_with $internal_IP } {   
  9.       log local0. "From internal..."   
  10.     } else {   
  11.       log local0. "From external..."   
  12.     }   
  13.   }   
  14. }   
  15.   

 c、

  1. ##====================================   
  2. iRule name: Insert_ClientIP_to_header   
  3. #在往服务器上提交的Http请求头中增加客户端实际IP地址,   
  4. #在应用中可以这样取客户端IP(java代码):   
  5. #String clientIP = request.getHeader("Client-IP");   
  6. when HTTP_REQUEST {   
  7.   HTTP::header insert Client-IP [IP::client_addr];   
  8. }   
  9. #when HTTP_RESPONSE {   
  10. #  #HTTP::header insert Server-IP [IP::server_addr]   
  11. #  clientside { HTTP::header replace Host [IP::server_addr] }   
  12. #}   
  13.   

 d、

  1. ##====================================   
  2. iRule name: Select_Pool_By_Query_String   
  3. #根据URI中的关键字选择相应的POOL   
  4. when HTTP_REQUEST {   
  5.   #报表报送功能转向到报表专用POOL   
  6.   if { [HTTP::uri] starts_with "/bbbs" } {   
  7.     pool REPORT_HTTP_POOL   
  8.   }   
  9.   #其他要特殊处理的情况   
  10.   #elsif {} {}   
  11. }   
  12.   

 e、

  1. ##======================================   
  2. iRule name: Replace_Host_String_For_External    
  3. #对于外部访问的请求,把页面中本地地址替换成域名   
  4. when HTTP_RESPONSE_DATA  {   
  5.   set find "145.24.216.106"   
  6.   set replace "www.shineauto.cn"   
  7.   set payload [HTTP::payload]   
  8.   set cip "[IP::client_addr]"   
  9.   #if { not ( [IP::addr [IP::remote_addr] equals 145.24.0.0 netmask 255.255.248.0] ) } {   
  10.   #  if {[regsub -all $find $payload $replace new_response] > 0} {   
  11.   #    HTTP::payload replace 0 [HTTP::payload len] $new_response    
  12.   #  }   
  13.   #}   
  14.   
  15.  
  16.   #下面是测试时内部地址时使用的   
  17.   #if { [ $cip starts_with 145.24.32] } {   
  18.     if {[regsub -all $find $payload $replace new_response] > 0} {   
  19.       HTTP::payload replace 0 [HTTP::payload len] $new_response    
  20.     }   
  21.   #}   
  22. }   
  23.   

f、

  1. ##========================================   
  2. iRule name: Check_Client_IP_Select_POOL    
  3. #根据客户端IP选择不同的Pool   
  4. when CLIENT_ACCEPTED {   
  5.   if { [IP::addr [IP::remote_addr] equals 145.24.32.0/255.255.248.0] } {   
  6.     pool BUSI_HTTP_POOL   
  7.   } else {   
  8.     pool CMS_HTTP_POOL   
  9.   }   
  10. }   
  11.   

g、

  1. ##========================================   
  2. ##替换Server返回页面中的所有匹配内容, 好像别的产品都没法做到吧   
  3. when HTTP_RESPONSE_DATA {   
  4.   set find "145.24.216.212"   
  5.   set replace "==It's bad(服务器信息)==145.24.216.212"   
  6.   set payload [HTTP::payload]   
  7.   if {[regsub -all $find $payload $replace new_response] > 0} {   
  8.     HTTP::payload replace 0 [HTTP::payload len] $new_response    
  9.   }   
  10. }  

 

你可能感兴趣的:(职场,休闲,big-ip,iRule)