Regelausführung & Reihenfolge

Das Verständnis, wie smoxy Regeln auswertet und ausführt, ist entscheidend für den Aufbau effektiver Traffic-Management- und Sicherheitsrichtlinien. Diese Seite erklärt den Ausführungsablauf, das Reihenfolgensystem und die Verhaltensmuster aller Regeltypen.

Ausführungsablauf zwischen Regeltypen

Anfragen werden in einer bestimmten Reihenfolge verarbeitet:

  1. Access Rules: Sicherheitsebene, wird zuerst ausgewertet, trifft Sicherheitsentscheidungen (blockieren, herausfordern, überspringen, fortfahren).

  2. Rewrite Rules: URL-Umschreibung, modifiziert die Anfrage-URL bevor andere Regeln angewendet werden.

  3. Page Rules: URL-basierte Einstellungen, werden nach URL-Umschreibungen konfiguriert.

  4. Conditional Rules: Bedingungsbasierte Einstellungen, werden zuletzt angewendet.

Bedeutung der Reihenfolge:

  • Access Rules zuerst: Priorisiere Sicherheitsaktionen.

  • Rewrite Rules als zweites: Transformiere URLs für konsistente Verarbeitung.

  • Page Rules als drittes: Wende Konfigurationen auf die aktualisierte URL an.

  • Conditional Rules zuletzt: Implementiere komplexe Logikbedingungen.

Beispiel: Eine Anfrage an /alte-seite kann über eine Rewrite Rule zu /neue-seite umgeschrieben werden. Dann werden Page Rules für /neue-seite angewendet, gefolgt von relevanten Conditional Rules.

Position innerhalb jedes Regeltyps

Wie Position funktioniert

Innerhalb jedes Regeltyps werden Regeln basierend auf ihrer Position (auch Reihenfolge genannt) ausgewertet:

  • Position beginnt bei 1 (nicht 0)

  • Regeln werden in aufsteigender Reihenfolge ausgewertet (1 → 2 → 3 → ...)

  • Wenn du eine neue Regel erstellst, wird ihr automatisch die nächste verfügbare Position zugewiesen

  • Position ist unabhängig für jeden Regeltyp (z.B. Access Rule #1 und Page Rule #1 sind getrennt)

Beispiel:

Access Rules: Position 1, 2, 3, 4, 5...
Rewrite Rules: Position 1, 2, 3...
Page Rules: Position 1, 2, 3...
Conditional Rules: Position 1, 2, 3, 4...

Position bestimmt die Auswertungsreihenfolge

Die Positionsnummer bestimmt, welche Regel innerhalb ihres Typs zuerst ausgewertet wird:

Position 1: Wird ZUERST ausgewertet
Position 2: Wird als ZWEITES ausgewertet
Position 3: Wird als DRITTES ausgewertet
...
Position N: Wird ZULETZT ausgewertet

Dies ist besonders wichtig für:

  • Access Rules: Whitelist-Regeln (skip- oder continue-Aktionen) sollten niedrigere Positionen haben als Block-Regeln

  • Rewrite Rules: Spezifischere URL-Muster sollten vor allgemeinen Mustern kommen

  • Page Rules: Spezifischere URL-Muster sollten vor allgemeinen Mustern kommen

  • Conditional Rules: Regeln, die du zuerst anwenden möchtest, sollten niedrigere Positionen haben

Regeln neu anordnen

Du kannst die Ausführungsreihenfolge deiner Regeln jederzeit über die Drag-and-Drop-Oberfläche im smoxy Dashboard ändern.

Wie das Neuanordnen funktioniert

Wenn du eine Regel an eine neue Position verschiebst:

  1. Nach OBEN verschieben (zu einer kleineren Positionsnummer):

    • Alle Regeln zwischen der neuen und alten Position verschieben sich nach unten (+1)

  2. Nach UNTEN verschieben (zu einer größeren Positionsnummer):

    • Alle Regeln zwischen der alten und neuen Position verschieben sich nach oben (-1)

  3. Ans Ende verschieben:

    • Setze eine sehr hohe Positionsnummer (z.B. 100)

    • Das System platziert sie automatisch am Ende

Beispiel:

Vorher: [Regel-1, Regel-2, Regel-3, Regel-4, Regel-5]
Verschiebe Regel-5 auf Position 2
Nachher: [Regel-1, Regel-5, Regel-2, Regel-3, Regel-4]

Positionsvalidierung

Das System stellt sicher:

  • Keine doppelten Positionen

  • Keine Lücken in den Positionsnummern

  • Sequentielle Reihenfolge wird beibehalten

  • Bei erkannten Konflikten werden alle Positionen automatisch neu berechnet

Erster Treffer vs. alle Treffer

Verschiedene Regeltypen haben unterschiedliche Ausführungsmuster:

Regeltyp
Ausführungsmuster
Stoppt nach Treffer?
Hinweise

Access Rules

Alle Treffer anwenden

⚠️ Optional

skip-Aktion kann nachfolgende Regeln überspringen

Rewrite Rules

Erster Treffer gewinnt

Ja

Stoppt nach erstem URL-Treffer

Page Rules

Erster Treffer gewinnt

Ja

Stoppt nach erstem URL-Treffer

Conditional Rules

Alle Treffer anwenden

⚠️ Optional

Fährt fort, außer stop=true

Access Rules - Positionsbasiert mit Skip

Access Rules werden in Positionsreihenfolge ausgewertet, aber die skip-Aktion beeinflusst die nachfolgende Ausführung:

  • Block/Challenge-Aktionen: Fahren mit der nächsten Access Rule fort

  • Skip-Aktion mit Flags:

    • access_rules=true: Überspringt verbleibende Access Rules

    • waf=true: Umgeht die Web Application Firewall

Best Practice: Platziere Skip-Regeln (Whitelist) auf niedrigeren Positionen (1, 2, 3...) und Block/Challenge-Regeln auf höheren Positionen.

Ausnahme: Wenn eine Regel stop=true hat, werden keine weiteren Access Rules ausgewertet.

Rewrite Rules - Erster Treffer gewinnt

Rewrite Rules stoppen nach dem ersten passenden URL-Muster:

Position 1: Treffer /alter-pfad → Umschreiben zu /neuer-pfad → STOPP
Position 2: Treffer /legacy/* → WIRD NICHT AUSGEWERTET
Position 3: Treffer /* → WIRD NICHT AUSGEWERTET

Wichtig: Reihenfolge ist entscheidend! Spezifischere Muster sollten vor allgemeinen Mustern kommen.

Page Rules - Erster Treffer gewinnt

Page Rules stoppen nach dem ersten passenden URL-Muster:

Position 1: Treffer /admin/* → Einstellungen angewendet → STOPP
Position 2: Treffer /* → WIRD NICHT AUSGEWERTET
Position 3: Treffer /blog/* → WIRD NICHT AUSGEWERTET

Wichtig: Reihenfolge ist entscheidend! Spezifischere Muster sollten vor allgemeinen Mustern kommen.

Conditional Rules - Alle Treffer werden angewendet

Conditional Rules werten alle aktivierten Regeln aus, deren Bedingungen erfüllt sind:

Position 1: Treffer (IP aus Büro) → Einstellungen angewendet → Fortfahren
Position 2: Treffer (Land = DE) → Einstellungen angewendet → Fortfahren
Position 3: Treffer (URI = /api/*) → Einstellungen angewendet → Fortfahren
Alle drei Regeln können auf dieselbe Anfrage angewendet werden!

Ausnahme: Wenn eine Regel stop=true hat, werden keine weiteren Conditional Rules ausgewertet.

Stop-Verhalten (Conditional & Access Rules)

Die Stop-Option ist nur für Conditional & Access Rules verfügbar.

Wie Stop funktioniert

Wenn aktiviert (stop=true):

  • Die Einstellungen der Regel werden angewendet

  • Alle nachfolgenden Regeln werden übersprungen

  • Andere Regeltypen (Rewrite, Page) sind nicht betroffen

Wenn deaktiviert (stop=false, Standard):

  • Die Einstellungen der Regel werden angewendet

  • Die Auswertung fährt mit der nächsten Regel fort

Anwendungsbeispiel:

Position 1: WENN (Wartungsmodus) DANN (Wartungsseite anzeigen) STOPP
Position 2: WENN (Büro-IP) DANN (Basic Auth deaktivieren) [wird während Wartung nie ausgewertet]
Position 3: WENN (Mobil) DANN (Bilder optimieren) [wird während Wartung nie ausgewertet]

Cache-Hit vs. Cache-Miss Ausführung

Regeln werden in verschiedenen Phasen ausgeführt, abhängig davon, ob Inhalte aus dem Cache oder vom Origin-Server geladen werden:

Typischer Ausführungskontext

  • Access Rules: Werden bei Cache-Hit und Cache-Miss ausgeführt (Sicherheit gilt immer)

  • Rewrite Rules: Werden vor der Cache-Abfrage ausgeführt (URL-Transformation erfolgt zuerst)

  • Page Rules: Können unterschiedlich ausgeführt werden, je nachdem ob Inhalte gecacht sind

  • Conditional Rules: Werden basierend auf Anfragebedingungen ausgeführt (unabhängig vom Cache-Status)

Debug-Header

Aktiviere Debug-Header in der Konfiguration deiner Website um zu sehen:

  • Welche Regeln angewendet wurden

  • Cache-Treffer/Miss-Status

  • Details zur Regelauswertung

Dies hilft dir zu verstehen, wie genau deine Regeln für jede Anfrage ausgeführt werden.

Best Practices für die Regelreihenfolge

1. Access Rules - Whitelist zuerst

Position 1-3: Skip-Regeln (vertrauenswürdige IPs, interne Tools)
Position 4+: Block/Challenge-Regeln (verdächtiger Traffic)

2. Rewrite Rules - Spezifisch vor allgemein

Position 1: /exakte-alte-url → /neue-url (am spezifischsten)
Position 2-3: Regex-Muster
Position 4-5: Catch-all-Muster (max. 5 Regeln insgesamt)

3. Page Rules - Spezifisch vor allgemein

Position 1: /admin/super-geheim/* (am spezifischsten)
Position 2: /admin/* (spezifischer)
Position 3: /* (Catch-all)

4. Conditional Rules - Kritische zuerst

Position 1: Wartungsmodus (mit stop=true)
Position 2-5: Geschäftslogik-Regeln
Position 6+: Optimierungsregeln

Deine Regelreihenfolge testen

  1. Aktiviere Debug-Header in deiner Website-Konfiguration

  2. Führe Testanfragen an deine Website durch

  3. Prüfe die Response-Header um zu sehen, welche Regeln angewendet wurden

  4. Passe die Positionen basierend auf den Ergebnissen an

  5. Wiederhole bis du das gewünschte Verhalten erreichst

Last updated

Was this helpful?