Citrix ADC< / span >

用例:限制会话数量

在此用例中,要求限制活动后端会话的数量。在部署中,每个会话登录都在URL中登录,每个会话注销都在URL中注销。成功登录后,后端会设置一个具有唯一10个字符值的会话ID cookie。

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

  1. 创建可存储每个活动会话的映射变量。映射的关键是会话ID。变量的过期时间设置为 600 秒(10 分钟)。< / span >

    添加nsvariable session_map -type map(text(10),ulong,100) -expires 600 
  2. 为映射变量创建以下分配:< / span >

    • 为会话ID创建一个条目,并将该值设置为1(实际上未使用此值)。< / span >

      > add ns assignment add_session -variable '$session_map[http.req.cookie.value("sessionid")]' -set 1 
    • 取消分配会话ID的条目,该条目隐式地减少了session_map的值计数。< / span >

      > add ns assignment delete_session -variable '$session_map[http.req.cookie.value("sessionid")]' -clear 
  3. 为以下内容创建响应程序策略:< / span >

    • 检查HTTP请求中是否存在该会话ID的映射条目。如果映射条目不存在,则执行add_session分配。< / span >

      > add responder policy add_session_pol 'http.req.url.contains("twbkwbi . p_sabancillogin ") || $session_map.valueExists(http.req.cookie.value("netsuis"))' add_session 

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

    • 检查会话何时注销。执行删除会话分配。< / span >

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

      add responder action redirect_too_busy redirect "/too_busy.html" add responder policy check_login_pol "http.req.url.contains("twbkwbi . p_sabancilogin ") && $session_map. txt ";valueCount > 100" redirect_too_busy 
  4. 全局绑定响应程序策略。< / span >

    绑定responder global add_session_pol 30然后绑定responder global delete_session_pol 10绑定responder global check_login_pol 20 
用例:限制会话数量< / span >< / span >