Astral 360 WSA — Accélérateur de sites

Mode avancé

Configuration détaillée par domaine — entêtes de sécurité, protection contre les robots, cache par catégorie, listes d'exclusion.

Le mode avancé permet à l'utilisateur final de personnaliser le comportement de la cache par domaine et par sous-domaine, indépendamment des défauts serveur définis par l'administrateur. C'est le mode le plus puissant des deux modes cPanel ; le mode simple est un picker unique de profil pré-calibré.

Pour basculer de Simple vers Avancé : dans l'interface cPanel WSA, le sélecteur de mode est juste sous le titre — choisissez Avancé et la page bascule vers la vue liste de domaines décrite ci-dessous.


1. Le modèle d'héritage à trois couches

Toutes les options du mode avancé suivent la même chaîne d'héritage — comprendre cela évite 90 % des questions de support :

   JSON par-domaine          ← ce que vous éditez ici
       ▲
       │ (seulement si "Custom" est sélectionné pour le domaine)
       │
   SQLite admin              ← ce que l'admin WHM a défini
       ▲                       sur la ligne "Défaut serveur"
       │
       │ (fallback quand l'admin n'a pas customisé l'option)
       │
   default.conf shipped      ← ce que le package WSA livre

Deux conséquences :

  1. Choisir Défaut serveur pour une catégorie ne veut pas dire « désactivé ». Cela veut dire « hériter de la couche inférieure » — ce qui peut elle-même hériter du défaut shipped. Lisez-le comme « utiliser le choix de l'admin ».
  2. Choisir Personnalisé ne wipe pas les valeurs héritées. Cela veut dire « je veux contrôler cette catégorie moi-même » ; l'éditeur préremplit avec les valeurs héritées pour que vous partiez de la politique actuelle et l'amendiez. La pastille « (Défaut : X) » à côté de chaque champ vous indique en permanence la valeur effective héritée.

La pastille « Défaut : … » ou « Défaut serveur : » qui apparaît à côté de chaque champ et de chaque sélecteur tri-state est votre lecture continue de ce que fait la couche héritée — même après que vous commenciez à override.


2. La page de liste des domaines

Liste des domaines en mode avancé

L'arrivée en mode avancé affiche un tableau avec une ligne par entité éditable :

  ┌────────────────────────────────────────────────────────────┐
  │  ★ Défauts                              [crayon]           │
  │     Définit les valeurs utilisées pour "Défaut" sur chaque │
  │     domaine                                                │
  ├────────────────────────────────────────────────────────────┤
  │  🏠 Domaine principal  example.com   [Défaut│Aucun│Custom] │
  │                                                  [crayon]  │
  ├────────────────────────────────────────────────────────────┤
  │  🌐 Addon              shop.example.fr [Défaut│Aucun│Custom]│
  │                                                  [crayon]  │
  ├────────────────────────────────────────────────────────────┤
  │  🌐 Sous-domaine       blog.example.com [Défaut│Aucun│Custom]│
  │                                                  [crayon]  │
  └────────────────────────────────────────────────────────────┘

  💡  Astuce — sélectionnez "Défaut" pour la plupart de vos
      domaines et personnalisez uniquement ceux qui ont des
      besoins particuliers.

2.1 Les icônes de la colonne de gauche

Icône Signification
★ Étoile Le profil Défauts — applique à chaque domaine qui choisit « Défaut » sur sa ligne.
🏠 Maison Votre domaine principal (celui associé à votre compte cPanel).
🌐 Globe Un domaine addon ou sous-domaine (un des domaines additionnels que votre compte héberge).

2.2 Le sélecteur 3-état par domaine

Chaque ligne de domaine (PAS la ligne Défauts) porte un contrôle segmenté à 3 états :

État Ce qui se passe pour ce domaine
Défaut Utilise le profil Défauts de la ligne 1. Éditer ce profil propage à tous les domaines dans cet état.
Aucun Cache désactivée entièrement pour ce domaine. Le vhost est construit sans directives proxy_cache_* — chaque requête va directement à Apache. À utiliser quand un site ne tolère aucun délai de cache (apps temps réel, domaines admin-only).
Custom Utilise un profil par-domaine que vous éditez en cliquant sur le crayon. Devient la vérité pour ce domaine, peu importe ce que dit le profil Défauts.

Le bouton crayon à droite des pills est activé uniquement quand l'état est Custom (l'icône est pleine). Pour Défaut et Aucun, il est affiché en grisé — vous pouvez toujours cliquer pour pré-explorer l'éditeur et basculer l'état vers Custom au moment de la sauvegarde.

La ligne Défauts (ligne 1) est toujours éditable — son crayon est en permanence actif.

2.3 Le feedback de sauvegarde

Après avoir sauvegardé un domaine (voir section 8), la ligne correspondante affiche brièvement un overlay « Enregistré » qui s'estompe après ~1 s. L'overlay couvre la ligne le temps de la confirmation backend ; il ne bloque pas l'interaction avec les autres lignes pendant ce temps.

Si l'étape de reconstruction échoue côté serveur (rare — généralement une config JSON personnalisée malformée), l'overlay est remplacé par un badge rouge « Erreur » et l'éditeur se rouvre avec un bandeau décrivant le problème.


3. L'éditeur — structure

L'éditeur de configuration par-domaine du mode avancé

Cliquer sur le crayon ouvre une modale divisée en deux :

  ┌────────────────────────────────────────────────────────────┐
  │  Paramètres pour : example.com                       [×]   │
  ├──────────────┬─────────────────────────────────────────────┤
  │ 🛡 Basique   │                                             │
  │ 🤖 Bots      │       contenu de l'onglet actif             │
  │ ⚡ Dynamique │       (4 à 8 lignes de "paramètre")         │
  │ </> JS/CSS   │                                             │
  │ 🖼 Images    │                                             │
  ├──────────────┴─────────────────────────────────────────────┤
  │ [lien doc]                       [Annuler]      [✓ Sauver] │
  └────────────────────────────────────────────────────────────┘

3.1 La barre latérale d'onglets

5 onglets, du haut vers le bas :

  1. Basique — Politique d'entêtes HTTP réponse (4 toggles).
  2. Protection des bots — Blocage par catégorie de robots avec édition optionnelle de listes UA par-domaine (8 catégories).
  3. Dynamique — Règles de cache pour les pages dynamiques (PHP, HTML, JSON, API).
  4. JS / CSS — Règles de cache pour scripts et feuilles de style.
  5. Images & Polices — Règles de cache pour les médias statiques.

L'onglet actif est mis en évidence (icône remplie + fond teinté) ; les autres se lisent comme « cliquer ici pour basculer ». Chaque onglet porte une étiquette sur 2 lignes : le titre principal et une courte sous-ligne contextuelle (par exemple, Basique / Sécurité des en-têtes) pour que l'opérateur sache où il va avant de cliquer.

3.2 Lignes de paramètre — le pattern commun

Chaque ligne dans n'importe quel onglet suit la même disposition à 3 colonnes :

Colonne Contenu
Icône Un glyphe spécifique à la catégorie qui identifie visuellement l'option (cookie, écran, serveur, lien, etc.).
Corps Titre en gras + description sur 1 ligne. Certaines lignes ont aussi un bouton Plus d'info (le petit i) qui ouvre une bulle avec explication détaillée, exemples, pièges.
Contrôle Un toggle, un sélecteur nombre+unité, une tri-state pill, ou un éditeur de liste avec chips (dépend de l'option).

Sous le contrôle (ou à droite du contrôle), vous verrez souvent une petite pastille grise étiquetée Défaut : . C'est votre lecture de la valeur héritée. Si vous commencez à éditer et voulez revenir, videz simplement le champ — le saver ré-applique le défaut.

Le bas de la modale contient les boutons d'action :

  • Lien Documentation (à gauche, atténué) — ouvre cette page dans un nouvel onglet pour pouvoir consulter sans perdre votre travail.
  • Annuler — abandonne tous les changements non sauvegardés et ferme la modale. Équivalent à cliquer le × dans l'en-tête.
  • Sauvegarder — valide chaque onglet, écrit le JSON par-domaine, et demande au serveur de reconstruire le vhost de ce domaine. Le bouton affiche une icône check et change brièvement de label en « Sauvegarde… » le temps de l'aller-retour.

Si un champ échoue la validation (par exemple, TTL numérique invalide, token UA mal formé), un bandeau rouge apparaît en haut du contenu listant chaque champ fautif. La sauvegarde ne se fait pas avant que ce soit corrigé — fermer avec Annuler les abandonne.


4. Onglet Basique

Onglet Basique — entêtes de sécurité HTTP

L'onglet Basique porte 4 toggles, chacun contrôlant un en-tête HTTP de réponse. Ces toggles sont indépendants de la politique de cache — ils décrivent quels entêtes supplémentaires nginx va envoyer au navigateur du visiteur. L'état par défaut des 4 est Activé.

4.1 Powered-By header

Nom du toggle : enable_header_show_poweredby Défaut : Activé

Quand Activé, nginx ajoute l'en-tête de réponse :

X-Server-Powered-By: Nginx for WHM/cPanel by Astral Internet

Cas d'usage :

  • Utile pour le support technique — un curl -I rapide confirme que « ce site est servi par WSA » sans avoir besoin de vérifier la config vhost.
  • Certains opérateurs le désactivent pour éviter d'annoncer la pile publiquement (sécurité par obscurité reste faible, mais certaines politiques de conformité le requièrent).

4.2 Show cache status header

Nom du toggle : enable_header_show_cachestatus Défaut : Activé

Quand Activé, nginx ajoute :

X-Nginx-Cache-Status: HIT

Valeurs possibles :

Valeur Signification
HIT Réponse servie depuis la cache. Apache n'a PAS été appelé.
MISS Réponse générée par Apache, maintenant stockée pour la prochaine fois.
BYPASS La requête a matché une règle de bypass (cookie, URI, ou Cache-Control: no-cache de l'app) — Apache a été appelé et la réponse n'a PAS été stockée.
EXPIRED L'entrée mise en cache était périmée ; nginx a fetché une fresh d'Apache.
UPDATING Une entrée périmée a été servie pendant qu'un refresh en arrière-plan tourne. Arrive uniquement quand proxy_cache_use_stale est activé.
STALE Une entrée périmée a été servie parce qu'Apache est inaccessible. Rare — comportement de failover.
REVALIDATED L'entrée a été re-validée conditionnellement contre Apache (réponse 304) et servie.

Cet en-tête est l'outil #1 de debugging pour diagnostiquer « est-ce que mon site est réellement mis en cache ? ». Désactivez-le uniquement si vous ne voulez pas que les utilisateurs finaux voient l'état interne du cache dans leurs DevTools.

4.3 XSS Protection header

Nom du toggle : enable_header_add_xss_protection Défaut : Activé

Quand Activé, nginx ajoute :

X-XSS-Protection: 1; mode=block

C'est un ancien filtre XSS côté navigateur. Les navigateurs modernes (Chrome ≥ 78, Firefox, Safari) ont retiré le moteur sous-jacent et ignorent cet en-tête ; seuls les anciens IE et Edge le respectent. La plupart des politiques de sécurité exigent quand même cet en-tête pour la couverture anciens-navigateurs, donc le défaut est Activé. Coût nul.

4.4 Content-Type Options header

Nom du toggle : enable_header_add_contenttypeoptions_protection Défaut : Activé

Quand Activé, nginx ajoute :

X-Content-Type-Options: nosniff

Indique au navigateur de ne pas remettre en cause le Content-Type des réponses. Défend contre les attaques de confusion MIME où un fichier servi comme text/plain est silencieusement exécuté comme JavaScript. Aucun désavantage à activer et c'est un hardening de base du Web moderne — laissez Activé sauf raison spécifique.


5. Onglet Protection des bots

Onglet Protection des bots — 8 catégories de blocage

L'onglet le plus riche en fonctionnalités. Chaque ligne est une catégorie de trafic indésirable qui peut être bloquée sélectivement au niveau nginx (avant que la requête atteigne Apache ou votre application). La protection bots agit sur l'en-tête User-Agent de la requête, plus pour certaines catégories, sur la présence d'autres en-têtes.

Il y a 8 catégories. Les 5 premières exposent un éditeur de liste UA par-domaine en plus de la tri-state ; les 3 dernières sont en mode toggle seul parce que leur logique de détection ne prend pas de liste.

5.1 La pastille tri-state

Chaque ligne de catégorie porte le même sélecteur à trois boutons :

État Effet
Défaut serveur Hérite du paramètre de l'admin WHM. Peu importe l'état global pour cette catégorie défini par l'admin s'applique à ce domaine. La pastille Défaut : à droite vous indique quel est l'état effectif actuel (Bloqué ou Autorisé).
Bloqué Force-bloque la catégorie pour ce domaine, peu importe le choix de l'admin. Utile quand un domaine sur un serveur multi-tenant veut une politique plus stricte.
Autorisé Force-autorise la catégorie pour ce domaine. Utile quand un domaine (par exemple, une API amie des IA ou un blog SEO-promu) a besoin de s'opter hors d'un blocage global.

Ces trois états sont mutuellement exclusifs — l'actif est mis en évidence ; cliquer un autre fait basculer l'état de la ligne instantanément. Sauvegarder valide le choix pour toutes les lignes.

5.2 L'éditeur de liste UA par-domaine (5 catégories)

Pour les 5 catégories qui exposent une liste, choisir Bloqué révèle aussi l'éditeur :

  Robots d'entraînement IA
  ────────────────────────────────────────────────────────────
  [ Défaut serveur | Bloqué | Autorisé ]   Défaut : Autorisé
  ┌─────────────────────────────┐  ┌─────┐
  │  ai2bot                     │  │  +  │     (champ + ajout)
  └─────────────────────────────┘  └─────┘

  [ai2bot ×] [anthropic-ai ×] [bytespider ×] [claudebot ×]
  [ccbot ×] [gptbot ×] ...           ← liste de pills éditable

  Défaut : ai2bot, anthropic-ai, bytespider, … (Appliquer les valeurs par défaut)

Ce que contient la liste

Une liste de patterns de sous-chaîne User-Agent (insensible à la casse). Toute requête dont l'en-tête User-Agent contient un des tokens listés est matchée contre la règle de blocage de la catégorie. Les défauts shipped couvrent les crawlers bien connus de chaque famille ; vous pouvez ajouter les vôtres ou retirer ceux que vous ne voulez pas bloquer sur ce domaine.

Ajouter un token

Tapez dans le champ et cliquez + (ou pressez Entrée). Le token doit être alphanumérique avec la ponctuation autorisée (. - _ \ | ( ) * + ? \s) ; d'autres caractères sont rejetés avec une erreur inline. Le token ne doit PAS exister déjà dans une autre catégorie sur ce domaine (unicité cross-catégorie — voir 5.4 ci-dessous).

Retirer un token

Cliquez le × sur la pill. Le token est retiré de la liste immédiatement ; rien n'est persisté tant que vous ne cliquez pas Sauvegarder en bas.

Le lien Appliquer les valeurs par défaut

Sous la liste des pills, la lecture Défaut : montre la liste héritée (la liste effective que ce domaine utiliserait en Défaut serveur). Le lien entre parenthèses, Appliquer les valeurs par défaut, remplace vos pills actuelles avec la liste héritée en un clic — utile pour resetter après expérimentation.

Avertissement liste vide

Si vous basculez une catégorie en Bloqué et retirez toutes les pills, l'éditeur affiche un avertissement jaune :

« Une liste vide en mode Bloqué va appliquer les valeurs par défaut du serveur. Pour désactiver complètement la protection sur ce domaine, choisissez Autorisé à la place. »

C'est la confusion la plus fréquente : « j'ai mis Bloqué, j'ai retiré toutes les pills, pourquoi les bots sont toujours bloqués ? ». La réponse : nginx traite enable=1 avec list=[] comme « utiliser la liste héritée », parce qu'une liste vide veut presque sûrement dire « l'utilisateur n'a pas encore configuré ça » — pas « bloquer rien ». Si vous voulez vraiment aucun bot bloqué pour cette catégorie sur ce domaine, basculez la tri-state en Autorisé.

5.3 Les 8 catégories

5.3.1 IA assistants de recherche (ai_search)

Défaut dans config shipped : Autorisé

Patterns User-Agent pour les assistants IA qui fetchent une page quand un USAGER pose une question (retrieval live au moment de la question). Exemples : GPTBot (variante search), PerplexityBot, You.com bot.

Ils ne sont généralement PAS un problème de charge serveur — ils frappent votre site une fois par question d'usager réelle, avec le même respect Cache-Control qu'un navigateur normal. Les bloquer fait surtout mal à votre visibilité dans les produits AI search sans économiser de ressources significatives. Garder Autorisé sauf raison de politique claire pour bloquer.

5.3.2 IA outils utilisateur (ai_userinit)

Défaut : Autorisé

Patterns User-Agent pour les outils IA qu'un usager invoque délibérément (extensions navigateur, plugins de chat, outils « résume cette page »). Typiquement plus faible volume que la search et lié à l'intention usager explicite. Même logique qu'ai_search : les bloquer fait surtout mal à l'UX sans rien économiser.

5.3.3 Robots d'entraînement IA (ai)

Défaut : Bloqué

Patterns User-Agent pour les crawlers autonomes qui harvestent du contenu pour entraîner des modèles IA. Exemples : ai2bot, AnthropicBot, Bytespider, ClaudeBot, CCBot, GPTBot (variante entraînement), ImagesiftBot, MistralAI-User.

Ils tournent continûment et à haut volume, sans bénéfice visible pour votre site. Le défaut shipped les bloque ; c'est la catégorie la plus customisée — les opérateurs ajoutent les nouveaux crawlers à mesure qu'ils apparaissent.

5.3.4 Scanners de sécurité (scanners)

Défaut : Bloqué

Patterns User-Agent pour les scanners de vulnérabilités. Exemples : Nikto, sqlmap, Wfuzz, Wpscan, Nuclei, ZAP. Presque toujours malveillants ; le pen-testing légitime se fait normalement avec un UA personnalisé que vous contrôlez. Garder Bloqué.

5.3.5 Spiders SEO (seo)

Défaut : Autorisé

Patterns User-Agent pour les outils de recherche SEO. Exemples : AhrefsBot, SemrushBot, MJ12bot, MegaIndex, DotBot.

Ils crawlent agressivement pour construire des produits SEO tiers ; ce ne sont PAS Google / Bing / DuckDuckGo (ceux-là ont leurs propres UAs non dans cette liste et ne sont jamais bloqués). Les autoriser convient à la plupart des sites ; les bloquer est commun quand un problème de charge serveur peut être tracé à un d'eux. Les clients gérant des sites marketing-heavy peuvent vouloir les autoriser pour être trackés par les données Ahrefs / SEMrush.

5.3.6 User-Agents falsifiés (fake_ua) — toggle seul

Défaut : Bloqué

Cette catégorie détecte les User-Agent connus comme impossibles : valeurs forgées utilisées par des scrapers basiques et des outils d'abus qui ne réalisent pas que le UA qu'ils ont inventé ne correspond à aucune combinaison browser-version réelle. Les patterns sont curatés par l'admin WHM (pas éditables par-domaine) parce qu'ils sont regex-based et faciles à se tirer une balle dans le pied.

Vous n'avez que la tri-state pour celui-ci — pas d'éditeur de liste. La pastille Défaut : à droite vous indique si l'admin a activé ou désactivé le blocage global.

5.3.7 En-têtes stricts (strict_headers) — toggle seul

Défaut : Autorisé

Détection optionnelle plus stricte qui exige que chaque requête porte Accept-Language ET Accept-Encoding (les vrais navigateurs envoient toujours ces en-têtes ; les scripts basiques souvent pas). Quand Bloqué, les requêtes manquant un de ces en-têtes sont rejetées avec 403.

Cela a un petit taux de faux-positifs sur les proxies corporate et les clients embedded qui strippent les en-têtes — le défaut shipped la laisse Autorisé. Activer par-domaine seulement après avoir testé que votre trafic réel porte les deux en-têtes.

5.3.8 User-Agent vide (noagent) — toggle seul

Défaut : Bloqué

Bloque les requêtes qui arrivent sans en-tête User-Agent du tout (chaîne vide ou absent). Les vrais navigateurs et les bots bien comportés envoient TOUJOURS un User-Agent. Un UA vide est un signe quasi-certain d'un script malformé ou d'un probe.

Pas de liste — c'est une condition simple. Bloqué par défaut ; ne Autoriser que si vous avez un client interne légitime qui strippe délibérément son UA (rare).

5.4 Unicité cross-catégorie

Un seul token UA ne peut être que dans UNE catégorie par domaine. Tenter d'ajouter gptbot à Entraînement IA pendant qu'il existe déjà dans Assistants de recherche IA produit une erreur inline :

« Token already in ai_search — remove it from there first. »

C'est forcé trois fois défense-en-profondeur : dans l'ajout côté client, dans le handler de sauvegarde côté serveur, et dans l'émetteur regex qui écrit la config nginx finale. La vérification utilise un ordre d'itération fixe pour résoudre de façon déterministe les conflits quand une vieille config a mis le même token dans plusieurs catégories (premier-trouvé-gagne : Entraînement IA → Recherche IA → User-init IA → Scanners → SEO).


6. Onglet Dynamique

Onglet Dynamique — règles de cache pour les pages générées

Règles de cache pour le contenu dynamique — HTML généré, JSON, APIs REST, ou toute réponse qui ne porte pas une extension .css/.js/image. C'est l'onglet qui affecte le plus directement la vitesse de chargement perçue pour un site web typique.

6.1 Master switch — Activer la cache dynamique

Nom : dynamicfiles_Activate Défaut : Activé

Quand Désactivé, toutes les autres options de cet onglet sont grisées et nginx skippe complètement la cache dynamique pour ce domaine. Le vhost n'émet aucune directive proxy_cache_* pour les réponses dynamiques — chaque requête passe à Apache. Utile pour un site admin mono-usager, une application temps réel, ou un domaine où la cache cause des problèmes que vous ne voulez pas investiguer.

Quand Activé, le reste des lignes prend effet.

6.2 Bypass Cache-Control header

Nom : dynamicfiles_disablecachecontrolbypass Défaut : Désactivé (= respecte le Cache-Control de l'app)

La spec HTTP dit qu'un proxy de cache devrait obéir à Cache-Control: no-cache et Cache-Control: private du backend. Beaucoup de CMS et frameworks émettent ces directives sur chaque page dynamique même quand la réponse est parfaitement cacheable, parce qu'ils ne savent pas qu'ils sont derrière un proxy de cache.

Quand ce toggle est Activé, WSA ignore ces directives et cache quand même selon le TTL serveur ci-dessous. Cas d'usage : un site WordPress dont le thème insère <?php header('Cache-Control: no-cache'); ?> dans header.php pour une raison historique — activer ce toggle laisse WSA cacher malgré le mauvais en-tête.

Trade-off : vous prenez la responsabilité de garantir que la réponse EST vraiment cacheable. Les pages avec données par-utilisateur derrière ce toggle leakeront entre utilisateurs. Les listes de bypass cookie / URI ci-dessous sont votre filet de sécurité (carvent out les usagers connectés, paniers, chemins admin).

6.3 TTL serveur — durée de cache nginx

Noms : dynamicfiles_servercache_digit + _char Défaut : voir la pastille Défaut : sur la ligne (typiquement 5 minutes à 1 heure selon le choix de l'admin)

Combien de temps nginx garde une réponse en cache sur disque avant de la considérer périmée. Le widget est divisé en :

  • Un champ nombre (0–255).
  • Une dropdown unité : secondes (s), minutes (m), heures (h), jours (d), semaines (w), mois (M).

Exemples et règles du pouce :

Type de site TTL suggéré
Home page de news / blog 5–15 minutes
Catalogue produits 1 heure
Brochure mostly-static 1 jour
Site de documentation 1 semaine

Un TTL plus haut donne plus de hits cache mais une fraîcheur plus lente. Vous pouvez toujours purger la cache manuellement via le bouton Vider la cache sur l'accueil cPanel WSA, ou par-domaine depuis WHM si l'admin a câblé cette voie.

Laisser le champ vide ré-applique le défaut hérité à la sauvegarde.

6.4 TTL navigateur — durée de cache côté visiteur

Noms : dynamicfiles_browsercache_digit + _char Défaut : voir la pastille (souvent 0, = « pas de cache navigateur supplémentaire »)

Combien de temps le navigateur de l'usager cache la réponse, défini via les en-têtes de réponse Expires et Cache-Control: max-age. Indépendant de la cache serveur — contrôle ce que le navigateur fait sur les visites suivantes.

  • Une valeur de 0 veut dire « dis au navigateur de ne pas cacher » (chaque visite re-fetche depuis le serveur, qui sert ensuite depuis sa propre cache ou re-build).
  • Une valeur plus haute réduit les requêtes vers votre serveur entièrement mais au prix que les usagers voient du contenu périmé jusqu'à ce que leur cache navigateur expire. Garder bas (0 à 5 minutes) pour du contenu dynamique ; le TTL serveur est ce qui sauve votre CPU.

Nom : dynamicfiles_cookie

Une liste de NOMS de cookies (pas les valeurs). Toute requête qui arrive avec au moins un des cookies listés est automatiquement servie depuis Apache sans vérifier la cache, et la réponse n'est PAS stockée en cache non plus (statut : BYPASS).

C'est le mécanisme standard pour exclure les utilisateurs connectés de la cache.

Entrées recommandées (déjà dans les défauts shipped pour la plupart des CMS) :

Nom de cookie Ce qu'il identifie
wordpress_logged_in_* Session WordPress connectée
wp-postpass_* Visualiseur de post WordPress protégé
woocommerce_cart_hash Panier WooCommerce actif
comment_author_* Auteur de commentaire WordPress
PHPSESSID Session PHP générique
_pma_* Login phpMyAdmin

Ajouter un nom de cookie : tapez dans le champ, cliquez + (ou pressez Entrée). Le nom de cookie supporte le wildcard * en suffixe (par exemple, wordpress_logged_in_* match chaque cookie commençant par ce préfixe).

Retirer : cliquez × sur la pill.

La ligne Défaut : sous l'éditeur montre la liste héritée pour voir ce que la politique server-wide couvre déjà — commencez par ajouter uniquement les cookies spécifiques à VOTRE site que l'admin n'a pas pré-chargé globalement.

6.6 Liste de bypass par URI

Nom : dynamicfiles_uri

Une liste de patterns URI. Toute requête dont le path matche au moins une entrée est bypassée (statut BYPASS). À utiliser pour les paths qui ne devraient jamais être cachés même quand le même usager les visite — zones admin, flow checkout, pages de résultats de recherche.

Entrées recommandées (typiquement dans les défauts shipped) :

Pattern Application
/wp-admin Admin WordPress
/wp-login.php Login WordPress
/admin Path admin générique
/cart /checkout Flow panier et checkout
/my-account Page compte client
/cpanel /whm /webmail Paths front cPanel
/?p=preview Aperçu WordPress
?nocache=1 Bypass manuel via query string

Même pattern d'input que cookies — tapez, +, pill. Wildcards (*) et slashes en début sont supportés.


7. Onglet JS / CSS

Onglet JS / CSS — règles de cache pour scripts et styles

Règles de cache pour les fichiers .css et .js. Structurellement plus simple que Dynamique — pas de bypass cookie (ces fichiers ne sont pas cookie-sensibles), pas de bypass Cache-Control (ces fichiers ne ship normalement pas de Cache-Control).

Quatre contrôles, du haut vers le bas :

7.1 Master switch — Activer la cache JS/CSS

Nom : cssjsfiles_Activate Défaut : Activé

Même gate que Dynamique — quand Désactivé, le reste des lignes est désactivé. Cacher les assets statiques n'a essentiellement aucun risque de correctness, donc très peu d'opérateurs désactivent ceci.

7.2 TTL serveur

Noms : cssjsfiles_servercache_digit + _char Défaut : typiquement 1 mois

Combien de temps nginx garde le fichier .css / .js en cache. Les assets statiques peuvent comfortablement utiliser 1 mois à 1 an — les URLs versionnées (app.js?v=4.7.2) signifient qu'un vrai update obtient un nouveau URL et une nouvelle entrée cache ; le vieux TTL sur la vieille URL n'a pas d'importance.

7.3 TTL navigateur

Noms : cssjsfiles_browsercache_digit + _char Défaut : typiquement 1 mois à 1 an

Combien de temps le navigateur cache le fichier. Les valeurs longues sont idéales ici — elles éliminent complètement les roundtrips pour les visiteurs revenants. Couplé à des URLs versionnées, vous pouvez en toute sécurité utiliser 1 an.

7.4 Liste de bypass par URI

Nom : cssjsfiles_uri

URIs à exclure de la cache. Rarement nécessaire pour CSS/JS mais utile pour les builds dev non-versionnés où un seul nom app.js est écrasé à chaque déploiement. Ajouter /dev/app.js à la liste de bypass garantit que les développeurs voient les fichiers frais immédiatement sans purger manuellement la cache.


8. Onglet Images & Polices

Onglet Images & Polices — règles de cache pour les médias

Règles de cache pour les images, polices, vidéos, et autres gros médias statiques (.png, .jpg, .webp, .woff2, .mp4, .pdf, etc.). Même forme que JS/CSS — master switch, TTL serveur, TTL navigateur, liste bypass URI — mais typiquement TTLs plus longs par défaut parce que les médias sont le type de contenu le plus cacheable d'un site web typique.

8.1 Contrôles

Mêmes quatre contrôles que JS/CSS, nommés :

  • imagesfontsfiles_Activate
  • imagesfontsfiles_servercache_digit + _char
  • imagesfontsfiles_browsercache_digit + _char
  • imagesfontsfiles_uri

Défauts : généralement 1 mois cache serveur + 1 an cache navigateur. Ces chiffres sont raisonnables pour la grande majorité des sites ; les fichiers média ne changent presque jamais sur place (une nouvelle image obtient un nouveau nom via fingerprinting), donc un TTL long est sûr.

8.2 Quand bypasser

Cas où vous pourriez ajouter des URIs à la liste de bypass :

  • Avatars uploadés par usager qui écrasent un URL fixe (/avatars/user-12.png) — bypasser ce path ou tout le répertoire /avatars/ pour qu'un upload mis à jour soit visible immédiatement.
  • Endpoint de chart live-generated servant SVG/PNG avec un résultat différent à chaque appel.
  • Endpoint de téléchargement à URL signée où le URL lui-même encode l'authentification.

Pour tout le reste, laissez la liste bypass URI vide.


9. Sauvegarder

Le bouton Sauvegarder au bas de la modale exécute quatre étapes, dans l'ordre :

  1. Validation côté client — chaque input numérique est range-checké (0–255), chaque token UA est regex-matché, et le formulaire refuse de soumettre si quoi que ce soit est invalide (bandeau rouge en haut du content listant chaque coupable).

  2. POST AJAX vers ajax.live.php — le formulaire sérialise chaque champ en JSON et POST à l'endpoint cPanel. L'endpoint valide à nouveau côté serveur (défense en profondeur), puis écrit le résultat.

  3. Persistance vers JSON par-domaine — pour l'état Custom, la config par-domaine est écrite dans :

    /home/<cpuser>/.wsa/<domain>.json

Pour l'état Défaut ou Aucun, le fichier est supprimé (l'absence de fichier JSON signifie « utiliser la couche héritée ») ; la tri-state du row dans la SQLite cPanel est mise à jour pour refléter le nouvel état. 4. Reconstruction vhost — le handler AJAX appelle wsa --rebuild-user=<cpuser> pour que nginx régénère le(s) vhost(s) affecté(s) et reload. Complète typiquement en 1 à 3 s pour un compte unique. La modale se ferme et la ligne dans la liste de domaines flash l'overlay « Enregistré ».

Si l'étape 4 échoue (très rare — généralement un pin malformé en SQLite admin que la reconstruction ne peut pas réconcilier), la réponse AJAX porte une erreur et la modale reste ouverte avec un bandeau d'erreur. Le JSON par-domaine a quand même été écrit ; vous pouvez soit corriger le problème sous-jacent dans WHM, soit cliquer Sauvegarder à nouveau une fois que l'admin a résolu.

9.1 À quoi ressemble le JSON sauvegardé

Pour les opérateurs curieux ou pour le troubleshooting via SSH, le JSON par-domaine est une représentation structurée de chaque override. Approximativement :

{
    "basicconfig": {
        "header_show_poweredby":   "1",
        "header_show_cachestatus": "1",
        ...
    },
    "bot_protection": {
        "ai":         { "mode": "1", "list": ["gptbot", "ai2bot", ...] },
        "scanners":   { "mode": "default" },
        ...
    },
    "dynamicfiles":   { "Activate": "1", "servercache": "5m", ... },
    "cssjsfiles":     { "Activate": "1", "servercache": "1M", ... },
    "imagesfontsfiles": { "Activate": "1", "servercache": "1M", ... }
}

Les clés manquantes d'une section signifient « hériter ». Une section entière manquante signifie « tout dans cette section hérite ». Cette forme rend les overrides incrémentaux peu coûteux — ajouter une seule liste de bots ne force pas à répéter toutes les autres configs.


10. Revenir aux défauts

Pour effacer toute customisation pour un domaine et recommencer depuis les défauts serveur :

  1. Depuis la liste de domaines, basculez la tri-state du domaine de Custom vers Défaut.
  2. Cliquez n'importe où ailleurs (ou sauvegardez via l'éditeur — les deux fonctionnent).
  3. Le fichier /home/<cpuser>/.wsa/<domain>.json est supprimé, le vhost est reconstruit, et le domaine utilise immédiatement la politique admin héritée.

Pour effacer UNE catégorie de bot mais garder vos autres overrides :

  1. Ouvrez l'éditeur sur le domaine.
  2. Basculez vers l'onglet Protection des bots.
  3. Pour la catégorie que vous voulez dropper, basculez la tri-state vers Défaut serveur.
  4. Sauvegardez.

Les overrides Custom des autres catégories restent intacts.


11. Dépannage

Symptôme Cause probable Fix
Sauvé une liste de bot Bloqué mais les bots touchent toujours Apache Liste vide sous Bloqué ré-applique la liste héritée (voir 5.2). Vérifier la lecture Défaut :. Ajouter des tokens UA spécifiques, ou basculer en Autorisé si vous ne voulez aucun bloc.
L'en-tête cache est BYPASS à chaque requête Un des cookies bypass est setté sur chaque page, OU l'URI matche un pattern bypass, OU l'app envoie Cache-Control: no-cache et vous n'avez pas activé Bypass Cache-Control. Vérifier curl -I de l'URL ; inspecter cookies dans DevTools.
L'en-tête cache manque complètement Le master switch de la catégorie est off, OU l'extension du fichier ne match pas ce que cet onglet gère. Ré-ouvrir l'éditeur et vérifier le toggle master de l'onglet.
Sauvé avec succès mais aucun changement visible Cache navigateur masque le résultat. Ouvrir en mode privé ou force-refresh (Ctrl+Shift+R).
« Token already in <catégorie> » quand on ajoute un UA Règle d'unicité cross-catégorie (5.4) Retirer le token de l'autre catégorie en premier, puis l'ajouter ici.
L'éditeur ne montre aucun domaine Le compte cPanel n'a aucun domaine, OU l'admin WHM n'a pas activé la feature WSA pour le plan de ce compte. Contacter l'admin d'hébergement.

12. Pour aller plus loin

  • Mode simple — Si vos sites ont des besoins similaires, le mode simple est plus rapide.
  • Vue d'ensemble — Pour comprendre la barre supérieure et le bouton Vider la cache.
  • Optimisation — Outils de développement pour identifier les cookies et URIs à exclure.