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 as configurações de DNS não estiverem 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), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está 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 à instância quando usar o Console de Série do EC2.

Antes de usar o console serial para solucionar problemas, conclua as seguintes etapas:

  • Conceda acesso ao console serial 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 o comando a seguir.
    Para sistemas REHL ou CentOS:

    $ sudo systemctl restart httpd

    Para sistemas Debian ou Ubuntu, execute o seguinte comando:

    $ sudo systemctl restart apache2
  4. Verifique se o servidor Web está em execução agora:
    Para sistemas REHL ou CentOS, execute o seguinte 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 o seguinte 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 comando a seguir:

    $ 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 de entrada dos usuários:
    Para sistemas REHL ou CentOS, execute o seguinte comando:

    $ sudo netstat -tulpn | grep httpd
    tcp        0      0 :::80                       :::*                        LISTEN      2961/httpd

    Para sistemas Debian ou Ubuntu, execute o seguinte 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 comando a seguir:

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

    Veja a seguir exemplos de resultados bem-sucedidos:

    Listen *:80

    -ou-

    Listen *:443

Amazon Linux, CentOS e RHEL

  1. Execute comando a seguir para verificar se as regras do iptables bloqueiam solicitações de entrada 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 de entrada:

    $ sudo iptables -A INPUT -p tcp --dport 80 --syn -m conntrack --ctstate NEW -j ACCEPT
  3. Execute o comando a seguir para permitir que a porta 443 aceite solicitações de conexão HTTPS de entrada:

    $ 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 o comando a seguir 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 o seguinte 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 de entrada 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. A seguir estão os localizações padrão dos logs 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