État du projet
📌 Version
Section intitulée « 📌 Version »La version courante est v0.2.0-rc.3, une release candidate. Ses notes de version listent ce qui a changé et les défauts connus au moment du tag.
La branche v0.1.x n’est plus maintenue. Elle ne reçoit ni correctifs, ni
rétroportages, ni avis de sécurité ; v0.1.x analysait en outre le champ
api_key de l’Admin API sans le lire, si bien que ce champ ne protégeait rien.
✅ Pris en charge
Section intitulée « ✅ Pris en charge »| Domaine | État |
|---|---|
| Protocoles | HTTP/1.1 et HTTP/2 sur TCP, HTTP/3 sur QUIC, à partir d’une seule configuration. |
| TLS | Certificats publics automatiques via ACME, autorité de certification interne persistante, et fichiers de certificat et de clé manuels. |
| Fichiers statiques | Service de fichiers avec compression zstd et gzip, requêtes partielles et requêtes conditionnelles. |
| Reverse proxy | Amonts multiples, plusieurs politiques de répartition de charge, contrôles de santé actifs et amonts de secours. |
| FastCGI | php_fastcgi en HTTP/1.1 et HTTP/2. |
| Limitation de débit | Limitation locale exacte par matcher. |
| Observabilité | Journal d’accès avec rotation, et métriques Prometheus. |
| Administration | Admin API pour inspecter l’état et recharger la configuration. |
🛡️ Refusé par conception
Section intitulée « 🛡️ Refusé par conception »Le format de configuration définit plus de noms que le serveur n’en implémente. Un nom que le serveur ne peut pas honorer est refusé au chargement, par son nom, avec un message indiquant que la fonctionnalité manque. Exemples les plus souvent cités par les lecteurs :
- les directives
map,invokeettracing; - l’option
storage, car les certificats et l’état ne sont stockés que sur le disque local ; on_demand_tlset les options d’agrafage OCSP ;handle_errors, dont le type de configuration existe mais n’effectue aucun travail ;encode br, faute d’encodeur Brotli en flux.
Les listes complètes sont maintenues dans le README du dépôt du serveur, et un test échoue lorsque l’analyseur refuse un nom que la liste ne mentionne pas.
⚠️ Limites connues
Section intitulée « ⚠️ Limites connues »- Le stockage des certificats est local. Plusieurs instances ne peuvent pas partager un même magasin de certificats, car ce magasin est un répertoire sur disque.
- DNS-01 n’a qu’un fournisseur.
tls { dns cloudflare <token> }et l’option globaleacme_dnssont implémentés pour Cloudflare. Tout autre nom de fournisseur est refusé au démarrage plutôt qu’accepté et ignoré. - Trailers et tunnels HTTP/3. Les trailers de requête déclarés ne sont pas
transmis (
501avant l’engagement de la réponse, réinitialisation du flux ensuite), les trailers d’amont produisent502, etCONNECTrenvoie501. - FastCGI en HTTP/3 renvoie
501jusqu’à ce que ce chemin dispose de son propre client FastCGI. - Les mises à niveau WebSocket échouent par intermittence sous charge,
environ 10 à 15 % sur une machine occupée. La cause est une course dans la
crate amont
pingora-proxy(cloudflare/pingora#946), et non dans la gestion propre à Pingclair ; une machine au repos ne la reproduit pas.
🐛 Signalement
Section intitulée « 🐛 Signalement »Les défauts et les erreurs de documentation se signalent via le suivi de tickets. Une politique de sécurité désignant un canal de signalement privé n’est pas encore publiée.
📚 Documents liés
Section intitulée « 📚 Documents liés »- CHANGELOG : ce qui a changé entre les versions.
- Benchmarks : conditions de mesure et résultats.
- Architecture : composants et chemin d’une requête.
