Por que não consigo me conectar a um site hospedado na minha instância do EC2?

8 minuto de leitura
0

Não consigo me conectar a um site público hospedado na minha instância do Amazon Elastic Compute Cloud (Amazon EC2).

Breve descrição

Os sites executados em uma instância do EC2 podem ficar inacessíveis por vários motivos. Para resolver esse problema, confirme se as configurações na sua instância do EC2 estão corretas. Por exemplo, se sua instância não estiver inicializando corretamente ou não tiver as configurações de DNS corretas, você não poderá se conectar a nenhum site hospedado nessa instância.

Use as etapas deste artigo para verificar as configurações da sua instância do EC2 e encontrar a causa raiz desse problema.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

Use o Console de Série do EC2 para Linux para solucionar problemas de tipos de instâncias baseadas em Nitro

Se você ativou o Console de Série do EC2 para Linux, poderá usá-lo para solucionar problemas de tipos de instâncias compatíveis com base em Nitro. Você pode acessar o console serial usando o console de série ou o AWS CLI. Você não precisa de uma conexão ativa para se conectar à sua instância quando usar o Console de Série do EC2.

Antes de usar o console serial para solucionar problemas, siga estas etapas:

  • Conceda acesso ao console de série no nível da conta
  • Crie políticas do AWS Identity and Access Management (IAM) concedendo acesso aos seus usuários do IAM
  • Verifique se sua instância inclui pelo menos um usuário baseado em senha

Verifique se a instância está em execução e passando pelas duas verificações de status

Certifique-se de que a instância esteja listada como sendo executada no console do Amazon EC2. Se sua instância não estiver em execução ou você tiver outro problema de verificação de status, siga as etapas em Por que minha instância EC2 Linux está inacessível e está falhando nas verificações de status?

Verifique se a instância inicializa corretamente

Verifique se há erros de inicialização nos logs do sistema da instância.

Verifique o grupo de segurança da instância e a configuração da ACL de rede

Verifique se a instância tem a configuração de DNS correta

Verifique se o servidor Web está em execução e se não há firewalls no nível do sistema operacional bloqueando o acesso às portas

As portas de rede são os terminais de comunicação para os quais vários serviços enviam solicitações. Essas solicitações incluem solicitações de conexão de sites dos usuários. Os servidores Web escutam tráfego HTTP na porta 80 e usam a porta 443 para tráfego criptografado com TLS/SSL. Se o servidor Web não estiver em execução ou os firewalls bloquearem essas portas, os usuários não poderão se conectar ao seu site.

Para verificar se o site está sendo executado localmente, execute este comando no site de hospedagem de instâncias do EC2:

curl https://localhost

-ou-

curl http://localhost:443

1.Conecte-se remotamente à instância por meio de SSH.

2.Verifique o status do servidor Web.

  • Para sistemas RHEL ou CentOS, use o comando systemctl status httpd para verificar o status do servidor Web. O comando retorna informações de que o servidor Web está inativo:
$ sudo systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
  • Para sistemas Debian ou Ubuntu, use o comando systemctl status httpd para verificar o status do servidor Web. O servidor Web deve estar escutando na porta 80 ou 443. O comando retorna informações de que o servidor Web está inativo:
$ sudo systemctl status apache2
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: inactive (dead)

3.Para reiniciar o servidor Web, execute este comando:

  • Para sistemas REHL ou CentOS:
$ sudo systemctl restart httpd
  • Para sistemas Debian ou Ubuntu, execute este comando:
$ sudo systemctl restart apache2

4.Verifique se o servidor Web está em execução agora:

  • Para sistemas REHL ou CentOS, execute este comando:
$ sudo systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2020-11-19 14:40:15 UTC; 42s ago
  • Para sistemas Debian ou Ubuntu, execute este comando:
$ sudo systemctl status apache2
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running)

Observação: para sistemas Linux mais antigos que executam SystemV, execute esse comando para verificar o status do servidor Web.
Para sistemas Debian ou Ubuntu, você deve substituir httpd por apache2:

$ sudo service httpd status
httpd is stopped

Para reiniciar um servidor Web parado no SystemV, execute este comando:

$ sudo service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd:                                            [  OK  ]

5.Execute este comando para confirmar se o servidor Web está escutando na porta 80 ou 443 as solicitações de conexão recebidas dos usuários:

  • Para sistemas REHL ou CentOS, execute este comando:
$ sudo netstat -tulpn | grep httpd
tcp        0      0 :::80                       :::*                        LISTEN      2961/httpd
  • Para sistemas Debian ou Ubuntu, execute este comando:
$ sudo netstat -tulpn | grep apache2
tcp6       0      0 :::80                   :::*                    LISTEN      2741/apache2

6.Verifique o status dos firewalls no nível do sistema operacional. Se você encontrar um firewall ativo, certifique-se de que ele permita solicitações nas portas 80 e 443.

Observação: se houver várias interfaces em execução, confirme se o servidor Web está escutando todos os IPs, executando este comando:

cat /etc/httpd/conf/httpd.conf  | grep Listen

Estes são exemplos de resultados bem-sucedidos:

Listen *:80

-ou-

Listen *:443

Amazon Linux, CentOS e RHEL

1.Execute este comando para verificar se as regras do iptables bloqueiam solicitações recebidas nas portas 80 e 443:

$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

2.Execute este comando para permitir que a porta 80 aceite solicitações de conexão HTTP recebidas:

$ sudo iptables -A INPUT -p tcp --dport 80 --syn -m conntrack --ctstate NEW -j ACCEPT

3.Execute este comando para permitir que a porta 443 aceite solicitações de conexão HTTPS recebidas:

$ sudo iptables -A INPUT -p tcp --dport 443 --syn -m conntrack --ctstate NEW -j ACCEPT

Amazon Linux 2023, Amazon Linux 2 e RHEL 7 e superiores

1.Execute este comando para verificar se o firewalld está em execução:

$ sudo firewall-cmd --state
running

2.Se o firewalld estiver em execução, execute esses comandos para configurá-lo para permitir conexões nas portas 80 e 443. O último comando neste exemplo recarrega o serviço para que as novas regras entrem em vigor:

$ sudo firewall-cmd --add-service=http --permanent
success
$ sudo firewall-cmd --add-service=https --permanent
success
$ sudo firewall-cmd --reload
success

Servidores Debian e Ubuntu

1.Execute este comando para verificar se há um firewall UFW:

$ sudo ufw status verbose
Status: active

2.Se o UFW estiver em execução, use este comando para permitir solicitações de conexão recebidas nas portas 80 e 443:

$ sudo ufw allow in 80/tcp
Rule added
Rule added (v6)
$ sudo ufw allow 443/tcp
Rule added
Rule added (v6)

Verifique se há problemas nos logs de erros de acesso ao seu servidor Web. Os logs do servidor Web estão localizados em /var/log. Esse local pode mudar, dependendo da configuração do servidor. Estes são os locais de log padrão do servidor Web:

  • Amazon Linux e RHEL: /var/log/httpd
  • Debian e Ubuntu: /var/log/apache2

Informações relacionadas

Como solucionar problemas de conexões lentas com um site hospedado na minha instância do EC2?

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos