ADC

Anwendungsfall: Begrenzung der Anzahl von Sitzungen

In diesem Anwendungsfall besteht die Anforderung darin, die Anzahl der aktiven Backend-Sitzungen zu begrenzen. In der Bereitstellung hat jede Sitzungsanmeldung eine Anmeldung in der URL und jede Sitzungsabmeldung hat eine Abmeldung in der URL. Bei erfolgreicher Anmeldung setzt das Backend ein Session-ID-Cookie mit einem eindeutigen 10-Zeichen-Wert.

Führen Sie die folgenden Schritte aus, um diesen Anwendungsfall zu erreichen:

  1. Erstellen Sie eine Map-Variable, die jede aktive Sitzung speichern kann. Der Schlüssel der Map ist die Sessionid. Die Ablaufzeit für die Variable ist auf 600 Sekunden (10 Minuten) festgelegt.</span>

    > add ns variable session_map -type map(text(10),ulong,100) -expires 600
    <!--NeedCopy-->
    
  2. Erstellen Sie die folgenden Zuweisungen für die Map-Variable:</span>

    • Erstellen Sie einen Eintrag für die Sitzungs-ID und setzen Sie diesen Wert auf 1 (dieser Wert wird nicht verwendet).</span>

       > add ns assignment add_session -variable '$session_map[http.req.cookie.value("sessionid")]' -set 1
       <!--NeedCopy-->
      
    • Gibt den Eintrag für eine Sitzungs-ID frei, wodurch die Wertanzahl für session_map implizit verringert wird.</span>

       > add ns assignment delete_session -variable '$session_map[http.req.cookie.value("sessionid")]' -clear
       <!--NeedCopy-->
      
  3. Erstellen Sie Responder-Richtlinien für Folgendes:</span>

    • Um zu überprüfen, ob ein Zuordnungseintrag für diese Sessionid in der HTTP-Anforderung existiert. Die Add_Session-Zuweisung wird ausgeführt, wenn der Zuordnungseintrag nicht existiert.</span>

       > add responder policy add_session_pol 'http.req.url.contains("example") || $session_map.valueExists(http.req.cookie.value("abc"))' add_session
       <!--NeedCopy-->
      

      Hinweis: Die Funktion valueExists () in der Richtlinie add_session_pol zählt als Referenz auf den Zuordnungseintrag der Sitzung, sodass jede Anforderung das Ablauf-Timeout für ihre Sitzung zurücksetzt. Wenn nach 10 Minuten keine Anfragen für eine Sitzung eingehen, wird der Eintrag der Sitzung freigegeben.

    • Um zu überprüfen, wann die Sitzung abgemeldet ist. Die delete_session -Zuweisung wird ausgeführt.</span>

       add responder policy delete_session_pol "http.req.url.contains("Logout")" delete_session
       <!--NeedCopy-->
      
    • Um zu überprüfen, ob Anmeldeanfragen vorliegen und ob die Anzahl der aktiven Sitzungen 100 überschreitet. Wenn diese Bedingungen erfüllt sind, wird der Benutzer zur Begrenzung der Anzahl der Sitzungen auf eine Seite umgeleitet, die anzeigt, dass der Server ausgelastet ist.</span>

       add responder action redirect_too_busy redirect "/too_busy.html"
       add responder policy check_login_pol "http.req.url.contains("example") && $session_map.valueCount > 100" redirect_too_busy
       <!--NeedCopy-->
      
  4. Binden Sie die Responder-Richtlinien global.</span>

    bind responder global add_session_pol 30 next
    bind responder global delete_session_pol 10
    bind responder global check_login_pol 20
    <!--NeedCopy-->
    
Anwendungsfall: Begrenzung der Anzahl von Sitzungen

In diesem Artikel