10 points par xguru 2021-09-27 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • 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.

Aucun commentaire pour le moment.