Le Hub · Proxy et cache
Une porte d’entrée,
et une mémoire pour les pages publiques.
Chaque visite passe par le Hub, qui l’envoie au bon programme. Ce qui peut être gardé en mémoire, une page publique, une feuille de style, est servi sans solliciter le programme.
À quoi ça sert
Sans point d’entrée commun, chaque programme a son serveur web à configurer, son certificat à poser, sa connexion à vérifier. Et chaque visite d’une page publique fait travailler le programme, même quand la page n’a pas changé depuis une heure.
Le proxy du Hub est la porte unique. Il lit le nom demandé et envoie la requête au conteneur qui le sert, sur le Hub ou sur une de vos machines rattachées. Il applique la connexion unique route par route. Il laisse passer le temps réel (WebSocket, flux continus) sans le retenir. Et, pour les programmes qui le demandent, il garde les réponses dans un cache à deux niveaux.
Ce qu’on voit à l’écran

L’écran Cache HTTP Gateway — Cache L1 (mémoire) + L2 (Redis) pour le reverse proxy, au 2026-09-23.
Quatre tuiles.
- 0.9 % Hit Rate : la part des requêtes servies depuis le cache.
- 3 Total Hits : trois réponses servies depuis le cache.
- 344 Total Misses : 344 requêtes passées au programme.
- 0 / 1000 Entrées L1 : le premier niveau, en mémoire, est vide sur mille places.
Les compteurs de succès et d’échecs partent du dernier démarrage du Hub.
Le tableau Hostname / Entrées L2 / Actions. Il donne, par nom d’hôte, les entrées du second niveau, gardé dans Redis, avec un bouton de purge par ligne. Ici : « Aucune entrée en cache. »
En bas, la mention « Cache active » : le cache fonctionne. En haut à droite, le bouton rouge Purger tout le cache.
Pourquoi presque rien en cache ? Parce que le cache s’active programme par programme, et qu’il ne garde pas, par défaut, les réponses faites à un utilisateur connecté. Sur ce Hub, la plupart des programmes sont des applications de travail derrière la connexion : il n’y a rien à garder pour elles. Le cache sert surtout aux sites publics — un WordPress, une forge, un tableau de bord public.
Comment on s’en sert
On active le cache d’un programme
À l’installation des logiciels qui s’y prêtent (WordPress, Gitea, Grafana), un réglage est proposé : Performance, Équilibre, Frais, ou Désactivé. Pour un programme déjà installé, le réglage est dans sa fiche, onglet « Proxy & SSO ».
On règle les durées
Par défaut, cinq minutes pour une page, vingt-quatre heures pour une image ou une feuille de style. Les chemins d’administration et d’API ne sont jamais gardés.
On vérifie dans le navigateur
Chaque réponse porte un en-tête X-Cache : HIT-L1, HIT-L2, MISS ou BYPASS. On sait si la page vient du cache.
On purge après une publication
Une application entière, un seul chemin, ou tout le cache, depuis cet écran.
Sous le capot
| Filtre | DynamicProxyFilter : routage sur l’en-tête Host, WebSocket en tunnel, SSE relayé morceau par morceau ; cible un conteneur du Hub ou d’un minihub, par son tunnel |
| Workers | proxy_worker, cache_worker |
| Proxy | add_route, update_route, remove_route, list_routes, get_routing_table, enable_sso, disable_sso |
| Cache | cache_stats, cache_configure (page_ttl, asset_ttl, enabled), cache_purge_app, cache_purge_path, cache_purge_all |
| Clé | CACHE:<nom d'hôte>:<chemin>:<empreinte de la requête> |
| L1 | en mémoire, 1 000 entrées au plus, 512 Ko par entrée |
| L2 | Redis, avec durée de vie, conservé au redémarrage ; réponses de plus de 2 Mo jamais gardées |
| Politique | par route, désactivée par défaut, rangée avec la route ; réponses authentifiées non gardées par défaut ; en-têtes Cache-Control respectés |
| Console | /hub/cache |
add_route fait plus que poser une route : il inscrit le nom au registre des domaines, crée l’enregistrement DNS et ne demande un certificat que si aucun joker ne le couvre.
Les limites d’aujourd’hui
Le proxy ne sonde pas les programmes : un programme démarré mais qui ne répond plus n’est pas signalé par lui. Et derrière Cloudflare, un envoi de plus de 100 Mo est refusé : pour de gros fichiers, il faut prévoir un second nom qui arrive directement au Hub.
