Compatibilité nginx
bext lit votre nginx.conf existant — chaque bloc include, chaque bloc server et location — et dessert le trafic lui-même. Pas de réécriture de configuration, pas de projet de migration. En mode mascarade, il installe en tant que service nginx, de sorte que les mêmes boîtes qui exécutaient nginx hier exécutent bext aujourd'hui et rien en amont ne le remarque.
En un coup d'œil#
- 68 des 70 directives communes — Couverture à 97 % des directives que les configurations réelles utilisent réellement
- Validé par rapport à des configurations réelles — des centaines de tests d'analyseur et de conversion, exécutés sur des fichiers de production
nginx.confavec des dizaines d'hôtes virtuels - Aucune modification de configuration — pointez bext sur votre
nginx.confet c'est parti - apparaît sous la forme
nginx—systemctl reload nginx,nginx -t, certbot et logrotate continuent de fonctionner sans changement (Mode mascarade) - PHP, à votre façon — proxy vers vos pools PHP-FPM existants, ou exécutez PHP dans le runtime intégré de bext et retirez complètement FPM
- Détection automatique WordPress — reconnaît les
wp-config.php/wp-contentet connecte le routage et la gestion des fichiers statiques - Suivi des certificats SSL — expiration analysée à partir des fichiers de certificat et apparue dans les tableaux de bord
- Synchronisation cloud —
bext nginx sync-cloudpousse chaque hôte virtuel vers le cloud. bext.dev, regroupé par client pour les flottes d'agence
Comment ça marche#
La compatibilité nginx de bext est un pipeline en trois étapes :
- Parse — Un analyseur à descente récursive lit
nginx.conf(y compris toutes les directivesincludeavec expansion globale) et crée un AST - Convert — Le convertisseur transforme les directives nginx en configuration de routage interne, de mise en cache, de TLS et de sécurité de bext.
- Serve — Le serveur HTTP de bext gère tout le trafic à l'aide de la configuration convertie
# Auto-detect nginx.conf and serve
bext serve --nginx-compat
# Or specify a config path
bext serve --nginx-config /etc/nginx/nginx.conf
# Full masquerade — replace nginx entirely
bext nginx masquerade install
Flux de demande#
Lorsqu'une requête arrive en mode compatible nginx, bext la traite via le même pipeline que nginx :
- Routage d'en-tête d'hôte — faire correspondre la requête à un bloc
server {} - Règles d'accès — évaluer les directives
allow/deny - Authentification — vérifiez les informations d'identification
auth_basic - Limitation de débit — applique les zones
limit_reqetlimit_conn - Contrôle de la taille du corps — valider
client_max_body_size - Conditions — évaluer les blocs
if - Réécrire les règles — appliquer les directives
rewriteetreturn - Emplacement correspondant à — trouvez le bloc
location {}le mieux correspondant - Pipeline de réponse — proxy, FastCGI, fichier statique ou réponse fixe
- Sortie — en-têtes, compression gzip, corps de réponse
Fonctionnalités prises en charge#
| Catégorie | Directives | Compter |
|---|---|---|
| Cœur | server, listen, server_name, root, index, try_files, error_page, default_type, etc. |
17 |
| Procuration | proxy_pass, proxy_set_header, proxy_redirect, proxy_cache, etc. |
8 |
| En amont | upstream, server, least_conn, ip_hash, hash, weight, backup |
7 |
| SSL/TLS | ssl_certificate, ssl_certificate_key, ssl_protocols, ssl_ciphers, ssl_stapling, etc. |
8 |
| Récrire | rewrite, return, if, set |
4 |
| Gzip | gzip, gzip_types, gzip_comp_level, gzip_min_length, gzip_vary |
5 |
| RapideCGI | fastcgi_pass, fastcgi_param, fastcgi_index |
3 |
| En-têtes | add_header, proxy_set_header |
2 |
| Accéder | allow, deny |
2 |
| Authentification | auth_basic, auth_basic_user_file |
2 |
| Limites | limit_req_zone, limit_req, limit_conn_zone, limit_conn |
4 |
| Variables | map, geo |
2 |
| Enregistrement | access_log, error_log, log_format |
3 |
| Autre | autoindex, sub_filter, expires, stub_status |
4 |
Types de sites pris en charge#
bext gère tous les types de sites courants trouvés dans les configurations de production nginx :
| Type de site | Comment ça marche | Détection |
|---|---|---|
| WordPress | FastCGI → pool PHP-FPM (ou PHP embarqué) | Détecté automatiquement via wp-config.php ou wp-content/ |
| Laravel | FastCGI → pool PHP-FPM (ou PHP embarqué) | Détecté via les modèles artisan ou public/index.php |
| Symfony / PHP personnalisé | FastCGI → pool PHP-FPM (ou PHP embarqué) | Toute directive fastcgi_pass |
| Node.js / proxy chignon | Proxy inverse → en amont | Moteur proxy_pass vers http:// |
| Sites statiques | Service racine du document | Directive root sans proxy ni FastCGI |
PHP fonctionne de deux manières et bext sélectionne en fonction de votre configuration :
- Proxy de votre pool PHP-FPM existant — lorsqu'un PHP
locationa unfastcgi_pass, bext l'honore et le transmet à ce socket ou à cette adresse, exactement comme l'a fait nginx. Il s'agit du véritable chemin d'accès : vos pools FPM, OPcache et votre version PHP sont intacts. La version est lue à partir du nom du socket (par exemplephp8.4-fpm.sock→ 8.4) pour le reporting. - Runtime PHP intégré — bext est également livré avec son propre PHP SAPI (mode travailleur, OPcache ; intégré via la fonctionnalité
php). Lorsqu'un PHPlocationcorrespond mais ne déclare aucunfastcgi_pass, bext exécute PHP en cours, vous permettant de retirer complètement PHP-FPM. Voir Laravel et Micro-framework PHP.
Les actifs statiques (CSS, JS, images) sont toujours servis directement par bext, même sur les sites PHP – correspondant aux blocs location habituels du fichier statique nginx.
Ce qui est différent#
Neuf directives nginx sont intentionnellement et non implémentées car l'architecture de bext les gère automatiquement :
sendfile,tcp_nopush,tcp_nodelay— gérés par le système d'exploitation et les E/S asynchrones de Rustworker_processes,worker_connections— bext utilise des tâches asynchrones, et non des processus de forkevents {}— non applicable dans un environnement d'exécution asynchronetypes {}— bext utilise la détection MIME intégréeproxy_buffering,proxy_buffer_size— bext diffuse les réponses
Synchronisation dans le cloud#
Synchronisez vos hôtes virtuels nginx avec le tableau de bord bext cloud en tant que projets et domaines — aucune configuration manuelle n'est nécessaire :
bext nginx list # List vhosts with stable IDs
bext nginx diff --cloud-api-key $KEY # Compare nginx vs cloud state
bext nginx sync-cloud --cloud-api-key $KEY # Push all to cloud
bext nginx sync-cloud --only a282,5427 # Push selected vhosts only
Chaque hôte virtuel obtient un identifiant hexadécimal stable à 4 caractères dérivé de sa liste de domaines. La commande diff classe chacun comme synchronisé, nouveau, dérive (incompatibilité de domaine) ou obsolète (dans cloud mais pas nginx ).
Voir Référence CLI pour tous les indicateurs.
Les neuf directives énumérées sous « Ce qui est différent » sont les seules lacunes intentionnelles. Tout le reste dans une production typique nginx.conf est converti automatiquement — exécutez bext nginx check pour confirmer avant d'apporter des modifications.
Prochaines étapes#
- Analyseur de configuration — comment fonctionne l'analyseur
- Couverture de la directive — référence complète de la directive
- Guide de migration — migration étape par étape depuis nginx
- Mode mascarade — remplacement complet avec systemd
- API de purge du cache — Gestion du cache compatible nginx
- Tableau de bord de contrôle en amont — interface utilisateur Web pour l'inspection avant migration
- Processus de rachat — migration du trafic atomique avec restauration
En rapport#
- Guide de migration : à partir de nginx — liste de contrôle structurée pour le déplacement d'une flotte
- PHP et PHP-FPM — Répartition FastCGI et runtime PHP intégré
- Intégration WordPress — routage WP détecté automatiquement au-dessus de nginx -compat
- Mise en cache — TTL, périmé pendant la revalidation et garde de bousculade
- TLS et HTTPS — comment bext charge et recharge à chaud les certificats
Links#
- Documentation nginx — référence en amont pour la sémantique des directives