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 um erro de site inacessível, verifique se as configurações na sua instância do EC2 estão corretas. Por exemplo, se sua instância não tiver as configurações de DNS corretas, não será possível se conectar a nenhum site hospedado nessa instância.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Use o SSH ou o SSM Session Manager para se conectar à instância. Se nenhum dos métodos estiver disponível, use o Console de Série do EC2 para conectar-se às instâncias criadas no Sistema Nitro.

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 em execução no console do Amazon EC2. Se você tiver um 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. Para obter mais informações, consulte Saída do console da instância ou Capturar uma imagem de uma instância inacessível.

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

Use os métodos a seguir para verificar se há erros de inicialização:

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

Use os métodos a seguir para verificar a configuração da sua instância:

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

Use os métodos a seguir para verificar a configuração da sua instância:

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. Conclua as etapas a seguir:

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

    curl https://localhost

    -or-

    curl http://localhost:443

    Observação: se você encontrar problemas ao usar o curl, verifique se há problemas com o servidor de hospedagem na web da instância. Além disso, verifique a configuração da aplicação na instância.
    Conecte-se à sua instância usando SSH, SSM Session Manager ou Console de Série do EC2.

  2. Verifique o status do serviço do servidor web.
    Para sistemas RHEL, CentOS, Fedora e Amazon Linux, execute 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.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, execute o comando systemctl status apache2 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.service
    The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor
    preset: disabled)
    Active: inactive (dead)
  3. Para iniciar o servidor web e ativar o serviço para iniciar na inicialização, execute os seguintes comandos:
    Para sistemas RHEL, CentOS, Fedora e Amazon Linux:

    $ sudo systemctl start httpd; sudo systemctl enable httpd

    Para sistemas Debian ou Ubuntu:

    $ sudo systemctl start apache2; sudo systemctl enable apache2
  4. Verifique se o serviço do servidor web está em execução e ativado:
    Para sistemas RHEL, CentOS, Fedora e Amazon Linux, execute o seguinte comando:

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

    Para sistemas Debian ou Ubuntu, execute o seguinte comando:

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

    Observação: para sistemas Linux 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 statushttpd is stopped

    Para iniciar um servidor Web parado no SystemV, execute o comando a seguir:

    $ sudo service httpd start
    Starting httpd:                                            [  OK  ]
  5. Para confirmar se o servidor Web está escutando na porta 80 ou 443 as solicitações de conexão de entrada dos usuários, execute o seguinte comando:

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

    Observação: se houver várias interfaces em execução, confirme se o servidor Web está escutando todos os endereços IP e execute o comando a seguir:

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

    Veja a seguir exemplos de saídas:

    Listen *:80

    -or-

    Listen *:443
  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.
    (Opcional) Para verificar se as regras do iptables bloqueiam solicitações de entrada nas portas 80 e 443, execute o comando a seguir:

    $ sudo iptables -vnL
    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

    A saída do comando IPTables anterior mostra que somente ICMP, localhost e porta 22/TCP (SSH) são permitidos. Isso significa que as conexões de entrada às portas 80/TCP e 443/TCP estão bloqueadas ou rejeitadas.
    Para permitir que as portas 80 e 443 aceitem solicitações de conexão HTTP e HTTPS recebidas, execute o seguinte comando:

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

    A saída a seguir mostra que a regra de multiportas foi adicionada às portas de serviço do servidor web, 80/TCP e 443/TCP.

    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

Para Amazon Linux 2023, Amazon Linux 2 e RHEL 7 e versões posteriores

Para confirmar se o serviço firewalld está em execução, execute o seguinte comando:

$ sudo firewall-cmd --staterunning

Se o serviço firewalld estiver em execução, execute os seguintes comandos para permitir conexões nas portas 80/TCP e 443/TCP. O último comando no exemplo recarrega o serviço para que as regras recém-adicionadas entrem em vigor:

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

Para 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
    Status:  active
  2. Se o UFW estiver em execução, use o seguinte comando para permitir solicitações de conexão de entrada nas portas 80/TCP 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. A seguir estão as localizações padrão dos logs do servidor web:

  • Amazon Linux e RHEL: /var/log/httpd
  • Debian e Ubuntu: /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 OFICIAL
AWS OFICIALAtualizada há 9 meses