Ir para o conteúdo

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

Para resolver problemas de sites inacessíveis, verifique se você definiu corretamente a configuração do site da sua instância do EC2. Configurações incorretas do servidor da web em sua instância bloqueiam o acesso a todos os sites hospedados nela.

Resolução

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

Verifique no console do Amazon EC2 se a instância está em execução. Para corrigir problemas na verificação de status, consulte Por que minha instância Linux do EC2 está inacessível e apresenta falha nas verificações de status?

Além disso, use a saída do console da instância e uma captura de tela da instância para verificar se a instância é inicializada corretamente.

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

Verifique as seguintes configurações da instância:

Verifique se o site tem a configuração de DNS correta

Verifique as seguintes configurações de DNS do seu site:

Verifique se o servidor da web está em execução e se nenhum firewall do sistema operacional bloqueia o acesso às portas

Para verificar a configuração da porta de rede e o servidor da web, conclua as seguintes etapas:

  1. Use o SSH ou o Gerenciador de sessões, um recurso do AWS Systems Manager, para se conectar à instância. Se você não puder usar o SSH ou o Gerenciador de sessões para se conectar a instâncias criadas no AWS Nitro System, use o Console de Série do EC2.

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

    curl https://localhost

    -ou-

    curl http://localhost:443

    Observação: se você encontrar problemas ao usar o curl, verifique se há problemas com o servidor da web e a configuração da aplicação da instância.

  3. Para verificar o status de serviço do servidor da web, execute o seguinte comando com base no sistema operacional (SO) que você executa.
    Red Hat Enterprise Linux (RHEL), CentOS, Fedora e Amazon Linux:

    sudo systemctl status httpd.service

    Exemplo de saída:

    The Apache HTTP Server
    Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset:
    disabled)
    Active: inactive (dead)

    Debian e Ubuntu:

    sudo systemctl status apache2.service

    Exemplo de saída:

    The Apache HTTP Server
    Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor
    preset: disabled)
    Active: inactive (dead)

    Na saída do comando, verifique o status inativo (morto).
    Se seus sistemas Linux executarem o System V, execute o seguinte comando para verificar o status do servidor da web:

    sudo service httpd status

    Observação: se você executa o Debian ou o Ubuntu, substitua httpd pelo apache2.
    Exemplo de saída:

    httpd is stopped
  4. Para iniciar o servidor da web e configurar o serviço para iniciar na inicialização, execute os seguintes comandos com base no seu sistema operacional:
    RHEL, CentOS, Fedora e Amazon Linux:

    sudo systemctl start httpd; sudo systemctl enable httpd

    Debian ou Ubuntu:

    sudo systemctl start apache2; sudo systemctl enable apache2
  5. Para verificar se o serviço do servidor da web está em execução e ativado, execute os seguintes comandos com base no seu sistema operacional:
    RHEL, CentOS, Fedora e Amazon Linux:

    sudo systemctl status httpd.service

    Exemplo de saída:

    The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service;
    enabled; vendor preset: disabled)
    Active: active (running)

    Debian ou Ubuntu:

    sudo systemctl status apache2.service

    Exemplo de saída:

    The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service;
    enabled; vendor preset: enabled)
    Active: active (running)

    Para iniciar um serviço do servidor da web interrompido para sistemas executados no System V, execute o seguinte comando:

    sudo service httpd start

    Exemplo de saída:

    Starting httpd:                                            [  OK  ]
  6. Para confirmar se o servidor da web está atento às solicitações de conexão de entrada do usuário, execute o seguinte comando:

    sudo netstat -tulpn|grep -i :80
    tcp6       0      0 :::80                   :::*                    LISTEN      11993/httpd

    Observação: execute o comando anterior duas vezes. Na segunda vez, substitua 80 por 443. Os servidores da web escutam tráfego HTTP nas portas 80 e 443 para tráfego criptografado com TLS/SSL.
    Se você executar várias interfaces, execute o comando a seguir para confirmar se o servidor da web está escutando em todos os endereços IP:

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

    Exemplos de saídas:

    Listen *:80
    Listen *:443
  7. Se você usa um firewall de sistema operacional, certifique-se de que ele permita solicitações nas portas 80 e 443.

  8. (Opcional) Para verificar se as regras de iptables permitem solicitações de entrada nas portas 80 e 443, execute o seguinte comando:

    sudo iptables -vnL

    Exemplo de saída:

    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
       35 10863 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

    No exemplo de saída anterior, as regras permitem somente o Protocolo de mensagens de controle de internet (ICMP), localhost e porta 22/TCP (SSH). As regras bloqueiam conexões de entrada para a porta TCP 80 ou 443.

  9. Para configurar as regras de iptables para permitir que as portas 80 e 443 aceitem solicitações de conexão HTTP e HTTPS de entrada, execute o seguinte comando:

    iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT

    Exemplo de saída:

    Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destination
        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 80,443
      486  104K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Verifique as configurações para AL2023, AL2 e RHEL 7 e versões posteriores

Para instâncias Amazon Linux 2023 (AL2023), Amazon Linux 2 (AL2) e RHEL, execute o seguinte comando para verificar se o serviço firewalld está em execução:

sudo firewall-cmd --state

Exemplo de saída:

running

Se o serviço firewalld estiver em execução, execute os seguintes comandos para permitir conexões nas portas TCP 80 e 443:

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

Observação: se você adicionou regras anteriormente, o comando reload recarrega o serviço e coloca as regras em vigor.

Para cada comando, verifique se a saída é semelhante ao exemplo a seguir:

success

Verifique as configurações dos servidores Debian e Ubuntu

Conclua as etapas a seguir:

  1. Para verificar se há um Firewall descomplicado (UFW), execute o seguinte comando:

    sudo ufw status verbose

    Exemplo de saída:

    Status:  active
  2. Se você estiver executando um UFW, use o comando a seguir para permitir solicitações de conexão de entrada nas portas TCP necessárias:
    Porta TCP 80:

    sudo ufw allow in 80/tcp

    Porta TCP 443:

    sudo ufw allow 443/tcp
  3. Para cada comando, verifique se a saída é semelhante ao exemplo a seguir:

    Rule added
    Rule added (v6)

Para solucionar problemas adicionais, verifique se há problemas nos logs de erros de acesso ao servidor web em /var/log. Use os seguintes locais de log padrão do servidor da web:

  • Para Amazon Linux e RHEL, use /var/log/httpd.
  • Para Debian e Ubuntu, use /var/log/apache2.

Observação: a localização do log do servidor web depende da configuração do seu servidor.

Informações relacionadas

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

AWS OFICIALAtualizada há um ano