Um amigo quer revisar seu post de blog em andamento, mas a pré-visualização só roda em localhost:8080. Várias ferramentas podem ajudar. Alguns funcionam como um serviço comercial, como ngrok ou Cloudflare Quick Tunnels. Alguns são auto-hospedáveis, mas exigem um cliente específico, como frp ou localtunnel. Alguns só exigem um cliente SSH simples, mas dependem de um servidor SSH específico, como sish. Vamos implementar uma solução auto-hospedada usando apenas Open SSH e nginx!
Primeiro, encaminhamos as conexões de uma porta em um servidor remoto para o seu serviço local: `$ ssh -N -R 0:localhost:8080 web02.luffy.cx`. Quando você especifica `0` como a porta remota, o servidor aloca uma porta livre, como 41535. Então, configuramos o nginx para fazer proxy das requisições de `https://p41535.ssh.luffy.cx` para `http://127.0.0.1:41535` usando um bloco de servidor que corresponde à porta no nome de domínio.
Também precisamos adicionar registros DNS para `*.ssh.luffy.cx` e obter um certificado curinga por meio do Let’s Encrypt. No meu caso, o Nix OS obtém os certificados automaticamente. O controle de acesso é alcançado usando o módulo ngx_http_secure_link_module, que calcula um hash sobre um conjunto de valores, incluindo um segredo, e o compara com o hash da requisição. O hash é codificado em base64 e colocado na URL como um nome de usuário, junto com seu carimbo de data/hora de expiração.
Entidades-chave: Empresas: Cloudflare, Let's Encrypt | Locais: localhost:8080, web02.luffy.cx, p41535.ssh.luffy.cx, ssh.luffy.cx, acme.luffy.cx, Route 53
Fonte: Hacker News · Resumido por HeadlinesBriefing