Por que não consigo me conectar a um site hospedado na minha instância do EC2?
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.
- Se você ver um erro de pânico do kernel, consulte Por que vejo um erro de “pânico do kernel” depois de atualizar o kernel ou reinicializar minha instância Linux do EC2?
- Para outros erros do sistema operacional, consulte Como soluciono problemas de uma instância Linux do EC2 que falhou na verificação de status da instância devido a problemas no sistema operacional?
Verifique o grupo de segurança da instância e a configuração da ACL de rede
- Certifique-se de que o grupo de segurança e a ACL de rede associados à instância permitam tráfego nas portas 80 e 443.
- Certifique-se de que a tabela de rotas na sub-rede da instância tenha uma rota padrão para um gateway da Internet.
Verifique se a instância tem a configuração de DNS correta
- Se o seu site usa o serviço DNS Route 53, verifique se você configurou os registros DNS corretamente.
- Certifique-se de que a instância tenha um endereço IP elástico atribuído a ela. Se você parar e iniciar sua instância, o endereço IP elástico ainda estará associado à instância.
- Certifique-se de mapear o endereço IP público ou o endereço IP elástico para um registro A.
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?
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 8 meses
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos