A aplicação corre, responde no próprio servidor, e de fora não abre. Em quase todos os casos é uma de três coisas: a aplicação só escuta em 127.0.0.1, a firewall não deixa passar a porta, ou o pedido nunca chega por causa do DNS ou de um proxy. Descobrir qual é faz-se de dentro para fora, e é rápido. Este artigo é para um VPS com acesso root.
De dentro para fora, por ordem
| 1 |
A aplicação está a escutar, e onde? sudo ss -tlnpProcure a porta. O endereço à esquerda diz tudo: 127.0.0.1:3000 só aceita pedidos do próprio servidor; 0.0.0.0:3000 (ou *:3000) aceita de qualquer lado. Se a porta nem aparece, a aplicação não está a correr.
|
|
| 2 |
Responde no próprio servidor? curl -I http://127.0.0.1:3000. Se não responde aqui, o problema é da aplicação, não da rede.
|
|
| 3 |
Veja a firewall: sudo ufw status verboseSe disser «inactive», o ufw não é o que bloqueia. Se estiver activo e a porta não constar, é o bloqueio.
|
|
| 4 |
Teste de fora, de outro computador ou do telemóvel: curl -I http://IP-DO-VPS:3000. Ou, com o nc: nc -zv IP-DO-VPS 3000.
|
|
| 5 |
Se for por nome, confirme o DNS e que o registo A aponta para este VPS: verificar o DNS.
|
|
O que a mensagem diz
| De fora, vê |
Quer dizer |
O que fazer |
| «Connection refused» |
O pedido chegou ao servidor e ninguém atendeu naquela porta (ou foi recusado). |
A aplicação não está a correr, ou escuta só em 127.0.0.1. Veja o passo 1. |
| Fica à espera e dá «timed out» |
O pedido foi descartado pelo caminho. Costuma ser a firewall. |
Abra a porta (ver abaixo) e repita o teste. |
| Funciona por IP e não por nome |
O DNS não aponta para este servidor, ou ainda não propagou. |
Verifique o registo A: quanto demora o DNS. |
| Funciona em HTTP e não em HTTPS |
A 443 está fechada, ou falta o certificado. |
Abra a 443 e veja HTTPS para um contentor. |
Abrir uma porta, por sistema
| Sistema |
Abrir a porta 8080 |
Ver |
| Ubuntu e Debian (ufw) |
sudo ufw allow 8080/tcp |
sudo ufw status verbose |
| AlmaLinux e Rocky (firewalld) |
sudo firewall-cmd --permanent --add-port=8080/tcp e depois sudo firewall-cmd --reload |
sudo firewall-cmd --list-all |
Se vai ligar o ufw pela primeira vez, faça-o por esta ordem, ou fecha a porta do próprio SSH e fica à porta do seu servidor: sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enableO OpenSSH assume a porta 22. Se o seu SSH usa outra, abra essa.
|
O Docker passa por cima do ufw. Uma porta publicada num contentor (-p 8080:80) fica aberta ao mundo mesmo que o ufw não a tenha autorizado, porque o Docker escreve as suas próprias regras. Para a manter só no servidor, publique em 127.0.0.1 (-p 127.0.0.1:8080:80) e ponha um proxy com HTTPS à frente: nginx como proxy inverso.
|
|
Abra só o que precisa. As portas das bases de dados (MySQL, PostgreSQL) não devem ficar abertas ao mundo. Para lhes chegar de fora, use um túnel: túnel SSH. Os seis cuidados básicos estão em segurança de um VPS.
|
Depois de abrir a porta no servidor, ainda pode haver outra barreira fora dele, se o seu ambiente tiver uma firewall adicional configurada. Se o teste de fora continua em «timed out» com a porta aberta e a aplicação a escutar em 0.0.0.0, diga-nos: verificamos o lado da rede. Instalar e configurar a firewall dentro do servidor é seu: até onde vai o nosso suporte.
|
|
Fez o teste de dentro para fora e a porta continua sem responder? Envie-nos o IP do VPS, a porta, e o resultado do ss -tlnp e do teste de fora.
Abrir um pedido de suporte
|
PRODUTO RECOMENDADO Servidor VPS com acesso root Recursos só seus, o sistema que escolher, reinstalação quando quiser. desde 7.560,00 Kz/mês (plano de 3 anos, com cupão) Ver planos |