Ce guide concerne BIG-IP sur TMOS. Vérifiez les noms et les options dans la documentation de votre version.
L’événement HTTP_REQUEST rend les informations HTTP disponibles. Dans l’exemple du guide, le chemin /api/* choisit le pool API et les autres chemins le pool web. La query string ne fait pas partie de HTTP::path.
Télécharger le schéma en SVG · version claireL’événement définit les informations disponibles
Une iRule exécute une logique à un moment du traitement. CLIENT_ACCEPTED concerne l’acceptation de la connexion ; HTTP_REQUEST intervient lorsque les en-têtes HTTP de la requête sont analysés. Une commande HTTP n’est pas rendue disponible par le seul fait que le port est 80 ou 443.
Avant de lire les conditions, vérifiez l’événement, les profils et le côté du flux. Pour HTTPS, le traitement HTTP suppose que le contenu soit accessible après terminaison TLS. Une commande correcte placée dans un événement inadapté peut produire une erreur plutôt que le routage attendu.
Sources : F5, ltm profile http ; F5, ltm virtual.
Chemin, URI et query ne sont pas identiques
HTTP::path renvoie le chemin ; la query correspond à la partie de paramètres ; l’URI inclut le contexte de requête plus large selon la commande utilisée. Une condition visant /api/ ne doit pas être écrite comme si un paramètre de query était un répertoire.
Avec Tcl switch, -exact compare une chaîne entière, -glob interprète les motifs et -regexp utilise des expressions régulières. L’ordre des motifs compte. Un astérisque dans un switch exact ne devient pas automatiquement un wildcard.
Sources : F5, HTTP::path ; F5, Tcl switch.
Un routage par préfixe lisible
Cette iRule pédagogique suppose un VS Standard avec profil HTTP, et des pools existants dans Common. Elle distingue le répertoire API, son chemin racine sans slash et le reste. La casse est volontairement conservée.
when HTTP_REQUEST {
switch -glob -- [HTTP::path] {
"/api" -
"/api/*" {
pool /Common/pool_api
}
default {
pool /Common/pool_web
}
}
} Sources : F5, HTTP::path ; F5, Tcl switch.
Data groups : séparer les valeurs de la logique
Un data group évite de multiplier les valeurs en dur dans une règle. Son type, le mode de comparaison et la forme de ses entrées doivent correspondre au besoin. Pour des réseaux IP, ne comparez pas les adresses comme de simples sous-chaînes.
Vérifiez aussi comment les chemins sont comparés : le préfixe /admin peut englober /administrator si la condition est trop large. Pour une décision de sécurité, la normalisation et le comportement de l’application doivent être étudiés ensemble.
Sources : F5, class, data groups ; F5, HTTP::path.
Comprendre return, redirect et les règles associées
Une redirection renvoie une réponse au client ; un choix de pool oriente la requête serveur. Ce ne sont pas deux formes équivalentes de navigation. Dans une iRule, return termine le traitement courant, mais ne constitue pas une garantie qu’aucune autre iRule associée ne s’exécutera.
Inventoriez les policies et les autres règles du VS. Si plusieurs objets tentent de sélectionner un pool ou de produire une réponse, leur combinaison doit être analysée avant d’attribuer un symptôme à une seule ligne.
Sources : F5, HTTP::redirect ; F5, ltm policy ; F5, return et commandes globales.
Prévoir les cas limites
En laboratoire, contrôlez /api, /api/commande, /apiculture, une query, une différence de casse et une URL encodée. Notez la destination attendue avant l’essai. Vérifiez les erreurs dans les journaux sans laisser une journalisation par requête à fort volume en production.
Sources : F5, sys log.
Lire les logs et les erreurs d’une iRule
Une trace doit associer l’événement, l’iRule et une tentative précise. Le journal local /var/log/ltm peut montrer les messages produits par log ainsi que des erreurs Tcl. Une erreur peut provenir d’un objet absent, d’une commande appelée hors de son événement ou d’une information pas encore disponible.
Si une trace attendue dans HTTP_REQUEST manque, vérifiez le VS, le profil HTTP, la terminaison TLS et les règles associées. Un trafic passthrough TLS ne produit pas une lecture de chemin HTTP comme un flux déchiffré. Un return quitte la logique Tcl courante ; une redirection envoie une réponse et impose de considérer les actions des autres iRules.
L’exemple limite la trace à une route de recette. Il ne journalise ni corps, ni cookie, ni query string. Après investigation, retirez la trace temporaire ; une journalisation sur chaque requête peut charger la plateforme. Si une erreur mentionne un pool, comparez son chemin complet et la branche réellement exécutée avant de changer le monitor.
when HTTP_REQUEST {
if { [HTTP::path] eq "/revision/health" } {
log local0.notice "revision event=HTTP_REQUEST route=health"
}
} Sources : F5, iRules log ; F5, HTTP::path ; F5, return et commandes globales ; F5, HTTP::redirect.
Sources et portée
Les dates de consultation et les versions applicables sont précisées pour chaque référence ci-dessous. Les exemples utilisent des noms et adresses de documentation à remplacer. Les commandes de lecture affichent l’existant ; les captures et requêtes de diagnostic sont à limiter au périmètre autorisé.
- F5 — ltm profile http · Référence TMSH v17.0.0 · consulté le 2 octobre 2026.
- F5 — ltm virtual · Référence TMSH v17.0.0 · consulté le 2 octobre 2026.
- F5 — HTTP::path · Référence de commandes iRules · consulté le 2 octobre 2026.
- F5 — Tcl switch · Référence de commandes iRules · consulté le 2 octobre 2026.
- F5 — class, data groups · Référence de commandes iRules · consulté le 2 octobre 2026.
- F5 — HTTP::redirect · Référence de commandes iRules · consulté le 2 octobre 2026.
- F5 — ltm policy · Référence TMSH v17.0.0 · consulté le 2 octobre 2026.
- F5 — return et commandes globales · Référence de commandes iRules · consulté le 2 octobre 2026.
- F5 — sys log · Référence TMSH v17.0.0 · consulté le 2 octobre 2026.
- F5 — iRules log · BIG-IP TMOS ; version et plateforme à vérifier dans la référence · consulté le 2 octobre 2026.
Retrouver le parcours de lecture F5 LTM