playground do nginx
(jvns.ca)<p>- Um playground para testar livremente alterações na configuração do nginx <br />
→ insira a config e os comandos `curl`/`http`, depois clique em Run para executar<br />
→ mostra o resultado dos comandos executados e os logs de erro do nginx <br />
- Frontend em Vue.js + backend em Go (apenas o código do servidor foi publicado como Gist)<br />
- Ao clicar no botão de execução, o backend em Go faz o seguinte <br />
→ salva o arquivo de configuração em um arquivo temporário<br />
→ cria um novo namespace de rede <br />
`ip netns add $RANDOM_NAMESPACE_NAME`<br />
→ executa o go-httpbin na porta 777<br />
→ inicia o nginx<br />
→ espera 100 ms até o nginx iniciar corretamente; se falhar, retorna o log de erro do nginx<br />
→ executa o comando inserido pelo usuário (verificando se é `curl` ou `http`)<br />
→ retorna a saída da requisição <br />
- Todas as requisições são processadas por um único servidor compartilhado <br />
<br />
- Abordagem de segurança: um pouco de isolamento, um pouco de YOLO <br />
→ o frontend é hospedado em uma CDN <br />
→ não usa banco de dados; só usa o armazenamento local do navegador<br />
→ cada nginx fica em seu próprio namespace de rede, bloqueando o acesso à internet <br />
→ usa o plano gratuito da fly.io <br />
→ colocou isso no FAQ para incentivar as pessoas a se comportarem de forma legal <br />
<br />
- Desempenho<br />
→ instância bem pequena (1 CPU compartilhada, 256 MB de RAM)<br />
→ como o frontend está na CDN, o backend só roda quando realmente é usado<br />
→ cada requisição leva cerca de 400 ms. Nada mal <br />
→ a versão Go do httpbin é mais leve que a versão original em Python <br />
→ o desempenho do frontend não é lá essas coisas </p>
Ainda não há comentários.