Créer des pages d’erreur personnalisées pour Application Gateway
Application Gateway vous permet de créer des pages d’erreur personnalisées au lieu d’afficher les pages d’erreur par défaut. Vous pouvez utiliser votre personnalisation et votre layout pour les erreurs liées à différents codes de réponse. Voici quelques scénarios de définition de pages d’erreur personnalisées :
- Affichage d’une page Maintenance ou état pour le code de réponse 502 Passerelle incorrecte. Cela est utile lorsque votre passerelle applicative n’a pas de serveur principal pour acheminer le trafic pendant la maintenance planifiée ou un problème imprévu avec les serveurs de pool principaux.
- Affichage d’une page Accès non autorisé personnalisée pour le code de réponse 403 Interdit qui se produit lorsque le WAF est en mode prévention et bloque le trafic malveillant.
- Affichage d’une page à la marque de l’entreprise avec des informations de contact en cas de problème.
Codes de réponse pris en charge
Les pages d’erreur personnalisées sont prises en charge pour les codes de réponse suivants :
Response code | Description |
---|---|
400 | Requête incorrecte (en préversion) |
403 | Interdit |
405 | Méthode non autorisée (en préversion) |
408 | Délai d’expiration de la requête (en préversion) |
500 | Erreur interne du serveur (en préversion) |
502 | Passerelle incorrecte |
503 | Service indisponible (en préversion) |
504 | Délai d’expiration de la passerelle (en préversion) |
Remarque
- Vous devez utiliser l’API version 2022-09-01 ou une version ultérieure pour configurer des pages d’erreur pour les nouveaux codes de réponse (en préversion).
- Le code de réponse 404 (Page introuvable) n’est actuellement pas pris en charge.
- Les pages d’erreur personnalisées s’affichent pour les codes de réponse générés par Application Gateway. Si une erreur provient du serveur principal, elle est transmise non modifiée au client.
Niveaux de configuration
Les pages d’erreur personnalisées peuvent être définies au niveau Global ou Écouteur :
- Niveau Global : les pages d’erreur définies au niveau global sont appliquées à tous les écouteurs de cette passerelle applicative. Sa configuration via le Portail Azure n’est actuellement pas prise en charge.
- Niveau Écouteur : les pages d’erreur au niveau de l’écouteur vous donnent un contrôle granulaire pour définir des pages d’erreur pour l’application servie par cet écouteur.
Remarque
Lorsque vous utilisez une combinaison de pages d’erreur au niveau Global et Écouteur pour une passerelle, vous devez mentionner explicitement les URL de tous les codes de réponse souhaités pour cet écouteur. Une configuration spécifique à l’écouteur remplace toutes les configurations globales précédentes applicables à cet écouteur.
Spécifications
Pour créer une page d’erreur personnalisée, vous devez :
- connaître le code de réponse pour lequel une page d’erreur personnalisée est requise.
- connaître l’emplacement distant (URL) correspondant de la page HTML. Il doit s’agir d’un fichier accessible publiquement.
- vérifier que la page d’erreur est accessible publiquement et retourne une réponse 200.
- vérifier que la page d’erreur doit avoir un type d’extension *.htm ou *.html.
- vérifier que la taille de la page est inférieure à 1 Mo.
- Vérifiez que les paramètres d’accès réseau sont définis sur « activés à partir de tous les réseaux » lors de l’utilisation d’un compte de stockage Blob Azure.
Vous pouvez référencer des images/CSS internes ou externes pour ce fichier HTML. Pour les ressources référencées en externe, utilisez des URL absolues accessibles publiquement. Tenez compte de la taille du fichier HTML quand vous utilisez des images inline encodées en base64, JavaScript ou CSS.
Remarque
- Dans l’écosystème Azure, vous devez utiliser un compte de stockage Blob Azure ou une machine virtuelle pour héberger une page d’erreur. Notez que le stockage Blob doit être directement accessible, car les comptes de stockage appuyés par les services Azure CDN ne sont actuellement pas pris en charge.
- Vous pouvez également choisir d’héberger les pages d’erreur à n’importe quel emplacement distant.
- Les liens relatifs ne sont pas pris en charge.
Fonctionnement ?
Après avoir spécifié une page d’erreur dans la configuration de votre passerelle applicative, votre passerelle vérifie la connectivité à la page HTML sur Internet. Elle télécharge ensuite le fichier sur son cache local.
Lorsqu’un client rencontre une erreur, votre passerelle applicative retourne un code de réponse et cette page HTML. Toutes les ressources référencées en externe (comme les images, JavaScript et les fichiers CSS) sont extraites directement par le client.
Votre passerelle applicative ne vérifie pas régulièrement l’emplacement du fichier source pour récupérer une nouvelle version. Vous pouvez effectuer toute mise à jour de configuration sur la passerelle pour mettre à jour manuellement le cache du fichier. Par exemple, modifiez l’URL d’erreur de page 1 à page 2, puis revenez à la page 1, ou lors de l’ajout d’un nouvel écouteur.
Configuration du portail
Étapes de configuration des pages d’erreurs personnalisées spécifiques à l’écouteur :
Accédez à Application Gateway dans le portail et choisissez la ressource requise.
Sélectionnez Écouteurs et accédez à un écouteur spécifique pour lequel vous souhaitez spécifier une page d’erreur.
Dans la section Pages d’erreurs personnalisées, spécifiez les URL accessibles publiquement pour les codes d’état requis.
Cliquez sur Enregistrer.
Configuration d’Azure PowerShell
Vous pouvez utiliser Azure PowerShell pour configurer une page d'erreur personnalisée. Par exemple, une page d'erreur personnalisée globale :
$appgw = Get-AzApplicationGateway -Name <app-gateway-name> -ResourceGroupName <resource-group-name>
$updatedgateway = Add-AzApplicationGatewayCustomError -ApplicationGateway $appgw -StatusCode HttpStatus502 -CustomErrorPageUrl "http://<website-url>"
Set-AzApplicationGateway -ApplicationGateway $appgw
Ou une page d'erreur au niveau d'un port d'écoute :
$appgw = Get-AzApplicationGateway -Name <app-gateway-name> -ResourceGroupName <resource-group-name>
$listener01 = Get-AzApplicationGatewayHttpListener -Name <listener-name> -ApplicationGateway $appgw
$updatedlistener = Add-AzApplicationGatewayHttpListenerCustomError -HttpListener $listener01 -StatusCode HttpStatus502 -CustomErrorPageUrl "http://<website-url>"
Set-AzApplicationGateway -ApplicationGateway $appgw
Pour plus d'informations, consultez Add-AzApplicationGatewayCustomError et Add-AzApplicationGatewayHttpListenerCustomError.
Étapes suivantes
Pour plus d’informations sur les diagnostics Application Gateway, voir Intégrité du serveur principal, journaux de diagnostic et métriques pour la passerelle Application Gateway.