Capítulo 5 · 5.3
Uma aplicação atrás de um reverse proxy
Muitas aplicações têm o seu próprio pequeno servidor web numa porta, como 3001 ou 5678. Essa porta não deve ser aberta à internet. O seu servidor web recebe o tráfego na porta 443 com https e encaminha-o para a aplicação: um reverse proxy.
Com Caddy
Se a aplicação estiver à escuta no próprio servidor, na porta 3001:
status.example.com {
reverse_proxy 127.0.0.1:3001
}
O Caddy encaminha automaticamente os cabeçalhos corretos (como X-Forwarded-For e X-Forwarded-Proto) e os websockets. Se a aplicação correr em Docker ao lado do Caddy, utilize o nome do contentor, como em A sua pasta de trabalho com compose.yaml, .env e Caddy.
Com nginx
server {
listen 80;
listen [::]:80;
server_name status.example.com;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Em seguida, execute sudo nginx -t, sudo systemctl reload nginx e sudo certbot --nginx -d status.example.com.
Bom saber
- Deixe a aplicação à escuta apenas em
127.0.0.1e não em todos os endereços. Assim, ninguém consegue contornar o seu proxy. - Muitas aplicações precisam de saber em que endereço estão acessíveis, por exemplo através de uma definição como
DOMAINouN8N_HOST. Indique aí o endereço https. - Um ecrã de administração que não se destina a todos deve ser protegido adicionalmente: com uma palavra-passe na própria aplicação, com verificação em dois passos ou apenas através de um túnel SSH (consulte Uma configuração SSH: iniciar sessão com um nome curto).
- Cabeçalhos de segurança adicionais, como o HSTS, são definidos com
headerno Caddy ouadd_headerno nginx. Ative o HSTS apenas quando o https funcionar corretamente em todo o lado.
