playground de nginx
(jvns.ca)<p>- Un playground donde puedes cambiar libremente la configuración de nginx y probarla <br />
→ ingresa la configuración y comandos `curl`/`http`, y ejecuta con Run<br />
→ muestra el resultado de los comandos ejecutados y el log de errores de nginx <br />
- Frontend en Vue.js + backend en Go (solo el código del servidor está publicado como Gist)<br />
- Al presionar el botón de ejecutar, el backend en Go realiza lo siguiente <br />
→ guarda el archivo de configuración como un archivo temporal<br />
→ crea un nuevo network namespace <br />
`ip netns add $RANDOM_NAMESPACE_NAME`<br />
→ ejecuta `go-httpbin` en el puerto 777<br />
→ inicia nginx<br />
→ espera 100 ms hasta que nginx se ejecute correctamente. Si falla, devuelve el log de errores de nginx<br />
→ ejecuta el comando ingresado por el usuario (verificando que sea `curl` o `http`)<br />
→ devuelve la salida de la solicitud <br />
- Maneja todas las solicitudes con un solo servidor compartido <br />
<br />
- Enfoque de seguridad: un poco de aislamiento, un poco de YOLO <br />
→ el frontend está alojado en un CDN <br />
→ no usa DB. Solo usa el almacenamiento local del navegador<br />
→ cada nginx se coloca en su propio network namespace. Se bloquea el acceso a internet <br />
→ usa el plan gratuito de fly.io <br />
→ ponerlo en el FAQ para pedirle a la gente que se porte bien <br />
<br />
- Rendimiento<br />
→ instancia muy pequeña (1 CPU compartido, 256 MB de RAM)<br />
→ como el frontend está en un CDN, el backend solo se activa cuando realmente se usa<br />
→ cada solicitud tarda alrededor de 400 ms. No está nada mal <br />
→ la versión en Go de httpbin es más ligera que la versión original en Python <br />
→ el rendimiento del frontend no es tan bueno </p>
Aún no hay comentarios.