F5 Big-IP:嵌套交换机的iRule优化

F5 Big-IP:嵌套交换机的iRule优化

F5 BIG-IP 10.2.4

我的 iRule 需要在主机上精确匹配,并在路径上通配符匹配。

when HTTP_REQUEST {
  switch [string tolower [HTTP::host]] {
    "internal.mycompany.com" {
      switch -glob [string tolower [HTTP::path]] {
          "/api1/*" {

这已经是优化了吗?重新构建为单个 iRule 是否会提供进一步的优化?

set $host [string tolower [HTTP::host]] 
set $path [string tolower [HTTP::path]]        
set $host-uri = "$host/$path"
when HTTP_REQUEST {
  switch -glob [$host-uri] {
    "internal.mycompany.com/api1/*" {

答案1

视情况而定。您在 VIP 上有多少个域名?如果不止一个,您在域名下有多少个 URI?

如果要分配,并且您将经常更新它,那么我建议使用数据组,这样您就不必一直修改 iRule。否则,就是 6 个一,6 个另一。

大致是——

when HTTP_REQUEST {
   set URL [string tolower [HTTP::host][HTTP::uri]]
   if {[class match $URL starts_with some_data_group]} {
      <some_action_based_on_DG_value> [class match -value $URL starts_with some_data_group]
   }
}

数据组项的值可以是重定向 URL、池、持久性方法等。

另外一个快速说明;由于您的 set 语句正在执行 irule 命令,因此它们需要位于有效事件的上下文中(即 [HTTP::host] 必须位于“when HTTP_REQUEST”内)。

相关内容