terrain de jeu nginx
(jvns.ca)- Un terrain de jeu permettant de tester librement des configurations nginx
→ saisir une config ainsi que des commandes curl/http, puis cliquer sur Run pour les exécuter
→ affiche le résultat de la commande exécutée et le journal d’erreurs de nginx
-
Frontend en Vue.js + backend en Go (seul le code serveur est publié via Gist)
-
Quand on appuie sur le bouton d’exécution, le backend Go effectue les opérations suivantes
→ enregistre le fichier de configuration dans un fichier temporaire
→ crée un nouvel espace de noms réseau
ip netns add $RANDOM_NAMESPACE_NAME
→ lance go-httpbin sur le port 777
→ démarre nginx
→ attend 100 ms jusqu’à ce que nginx démarre correctement ; en cas d’échec, renvoie le journal d’erreurs de nginx
→ exécute la commande saisie par l’utilisateur (en vérifiant qu’il s’agit bien de curl ou http)
→ renvoie la sortie de la requête
-
Toutes les requêtes sont traitées par un seul serveur mutualisé
-
Approche côté sécurité : un peu d’isolation, un peu de YOLO
→ le frontend est hébergé sur un CDN
→ pas de base de données ; uniquement le stockage local du navigateur
→ chaque nginx est placé dans son propre espace de noms réseau, avec blocage de l’accès à Internet
→ utilisation du free tier de fly.io
→ ajouter une FAQ pour encourager les gens à se comporter correctement
- Performances
→ très petite instance (1 CPU partagé, 256 Mo de RAM)
→ le frontend étant sur un CDN, le backend ne tourne que lors d’une utilisation réelle
→ une requête prend environ 400 ms. Pas mal
→ la version Go de httpbin est plus légère que la version originale en Python
→ les performances du frontend ne sont pas vraiment excellentes
Aucun commentaire pour le moment.