Reiniciei meu servidor Ubuntu esta manhã porque estava tendo o que parecia ser um erro de pouca memória (acontece ocasionalmente, não foi um problema suficiente para tentar corrigi-lo). Mas agora, meu site (que antes funcionava bem) não está mais acessível no navegador.
A configuração: estou executando um site NuxtJS usando pm2 para daemonizá-lo e nginx como proxy reverso. Eu tenho um gancho git pós-recebimento para que possa enviar para meu repositório git remoto, que então reconstrói o aplicativo e reinicia a instância pm2.
Só consigo acessar meu site dedentro do servidor, dentro de uma janela de terminal. Lynx, wget e cURL funcionam e até seguem o redirecionamento 301 para HTTPS. E eles estão funcionando quando solicito o domínio em si, não apenas o localhost:3000 que está recebendo proxy reverso. Tipo, curl https://my-domain.org
funciona. Se eu tentar curl/lynx/etc de qualquer outra janela do terminal, ele apenas esperará até o tempo limite. O mesmo acontece com o navegador – espera até o tempo limite.
Aqui estão as coisas que eu tentei/observei:
- Estou usando o UFW, então verifiquei se o firewall era o problema. Mas 80, 443 e 8080 estão todos configurados para PERMITIR.
- Tentei ver se talvez o nginx não estivesse ouvindo de alguma forma, então tentei
sudo lsof -i -P -n | grep LISTEN
. Aqui está o resultado disso:
nginx 2896 root 6u IPv4 668673557 0t0 TCP *:443 (LISTEN)
nginx 2896 root 7u IPv4 668673558 0t0 TCP *:80 (LISTEN)
nginx 2897 www-data 6u IPv4 668673557 0t0 TCP *:443 (LISTEN)
nginx 2897 www-data 7u IPv4 668673558 0t0 TCP *:80 (LISTEN)
nginx 2898 www-data 6u IPv4 668673557 0t0 TCP *:443 (LISTEN)
nginx 2898 www-data 7u IPv4 668673558 0t0 TCP *:80 (LISTEN)
- Tentei verificar o access.log do nginx. Todas as minhas solicitações curl/wget/Lynx estão aparecendo normalmente, mas nenhuma das solicitações do navegador está aparecendo. Também dei uma olhada no error.log e descobri o seguinte:
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:443 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:443 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: still could not bind()
Até agora, não encontrei nenhuma solução. Estou perplexo, porque o que quer que tenha mudado, mudou por causa de uma reinicialização. Quaisquer ideias são muito apreciadas.
EDIT para adicionar alguma saída:
sudo systemctl status nginx
:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-07-31 15:05:53 EDT; 27min ago
Process: 6834 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status
Process: 6840 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 6837 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 6841 (nginx)
CGroup: /system.slice/nginx.service
├─6841 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
├─6842 nginx: worker process
└─6843 nginx: worker process
Jul 31 15:05:53 parrot systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 31 15:05:53 parrot systemd[1]: Started A high performance web server and a reverse proxy server.
A saída de sudo nginx -T
é longa, entãoEu fiz disso uma essência.
Responder1
Isso é tão estúpido que não sei por que foi um problema, então qualquer opinião sobre isso será apreciada. Minhas ufw
configurações foram/são as seguintes:
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
80 ALLOW Anywhere
8080 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
8080 (v6) ALLOW Anywhere (v6)
Alguns anos 80 redundantes, mas eu estava adicionando coisas extras para ver se ajudava.
Alguém recomendou que eu tentasse desabilitar o ufw, só para ter certeza de que não era esse o problema. Aparentemente, foi. Desativei, o site imediatamente começou a funcionar, e quando reativei, esperando que voltasse a quebrar, ele... ainda funciona. Então, algo sobre o ufw precisava ser reativado quando eu reiniciei o servidor.
EDIT: Isso pode ser por causa do iptables-persistent, que é instalado automaticamente na maioria dos servidores, eu acho? Parece que éo mesmo problema que esta resposta SO.