nginx Playground
(jvns.ca)- Ein Playground, in dem sich nginx-Konfigurationen frei ändern und testen lassen
→ config- sowie curl/http-Befehle eingeben und auf Run klicken, um sie auszuführen
→ Zeigt das Ergebnis der ausgeführten Befehle sowie die nginx-Error-Logs an
-
Vue.js-Frontend + Go-Backend (offengelegt ist nur der Servercode als Gist)
-
Beim Klick auf den Run-Button führt das Go-Backend folgende Schritte aus
→ Speichert die Konfigurationsdatei als temporäre Datei
→ Erstellt einen neuen Network Namespace
ip netns add $RANDOM_NAMESPACE_NAME
→ Startet go-httpbin auf Port 777
→ Startet nginx
→ Wartet 100 ms, bis nginx korrekt läuft. Falls das fehlschlägt, werden die nginx-Error-Logs zurückgegeben
→ Führt den vom Nutzer eingegebenen Befehl aus (prüft, ob es sich um curl oder http handelt)
→ Gibt die Ausgabe der Anfrage zurück
-
Alle Anfragen werden von einem einzelnen gemeinsam genutzten Server verarbeitet
-
Sicherheitsansatz: ein wenig Isolation, ein wenig YOLO
→ Das Frontend wird über ein CDN gehostet
→ Keine DB-Nutzung, nur Browser Local Storage
→ Jede nginx-Instanz kommt in ihren eigenen Network Namespace. Internetzugriff wird blockiert
→ Nutzung des Free Tier von fly.io
→ In der FAQ darum bitten, sich anderen gegenüber freundlich zu verhalten
- Performance
→ Sehr kleine Instanz (1 shared CPU, 256 MB RAM)
→ Da das Frontend im CDN liegt, läuft das Backend nur bei tatsächlicher Nutzung
→ Eine Anfrage dauert etwa 400 ms. Gar nicht schlecht
→ Die Go-Version von httpbin ist leichter als die ursprüngliche Python-Version
→ Die Frontend-Performance ist nicht besonders gut
Noch keine Kommentare.