Citrix ADC

用例:限制会话的数量

在这个用例中,需求是限制活动后端会话的数量。在部署中,每个会话登录在URL中都有login,每个会话注销在URL中都有logout。登录成功后,后端会设置一个唯一的10个字符的session id cookie。

要实现此用例,请执行以下操作:

  1. 创建一个可以存储每个活动会话的映射变量。映射的键是会话id。变量的过期时间设置为600秒(10分钟)

    >添加变量session_map -type map(text(10),ulong,100) -expires 600 
  2. 为映射变量创建以下赋值:

    • 为会话id创建一个表项,并将该值设置为1(此值未被使用)

      $session_map[http.req.cookie.value("sessionid")]' -set 1 
    • 释放会话ID的条目,它隐式地减少session_map的值计数

      > add ns assign delete_session -variable '$session_map[http.req.cookie.value("sessionid")]' -clear 
  3. 为创建响应器策略

    • 检查HTTP请求中该会话id是否存在映射条目。如果映射表项不存在,则执行add_session分配

      >添加响应器策略add_session_pol 'http.req.url.contains("example") || $session_map.valueExists(http.req.cookie.value("abc"))' add_session 

      注意:add_session_pol策略中的valueExists()函数被视为对会话映射条目的引用,因此每个请求都会重置其会话的过期超时。如果10分钟后没有收到会话请求,则会话条目将被释放。

    • 检查会话何时注销。执行delete_session赋值

      add responder policy delete_session_pol "http.req.url.contains(\"Logout\")" delete_session 
    • 检查登录请求以及活动会话数量是否超过100。如果满足这些条件,为了限制会话的数量,用户将被重定向到表示服务器繁忙的页面

      添加响应器动作redirect_too_busy重定向"/too_busy.html"添加响应器策略check_login_pol "http.req.url.contains(\"example\") && $session_map。valueCount > 100" redirect_too_busy 
  4. 全局绑定响应器策略

    绑定响应器全局add_session_pol 30 next绑定响应器全局delete_session_pol 10绑定响应器全局check_login_pol 20 
用例:限制会话的数量