Pourquoi ne puis-je pas me connecter à un site Web hébergé sur mon instance EC2 ?

Lecture de 9 minute(s)
0

Je ne parviens pas à me connecter à un site Web public hébergé sur mon instance Amazon Elastic Compute Cloud (Amazon EC2). Comment puis-je résoudre ce problème ?

Brève description

Les sites Web exécutés sur une instance EC2 peuvent devenir inaccessibles pour plusieurs raisons. Pour résoudre ce problème, vérifiez que les paramètres de configuration de votre instance EC2 sont corrects. Par exemple, si votre instance ne démarre pas correctement ou ne possède pas les bonnes configurations DNS, vous ne pouvez pas vous connecter à un site Web hébergé sur cette instance.

Suivez les étapes de cet article pour vérifier les paramètres de configuration de votre instance EC2 et déterminer la source de ce problème.

Solution

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis AWS Command Line Interface (AWS CLI), assurez-vous d'utiliser la version la plus récente de l'AWS CLI.

Utilisation de l'EC2 Serial Console pour Linux afin de résoudre les problèmes liés aux types d'instances Nitro

Si vous avez activé l'EC2 Serial Console pour Linux, vous pouvez l'utiliser pour résoudre les problèmes liés aux types d'instance Nitro pris en charge. Vous pouvez accéder à la Serial Console à l'aide de la Serial Console ou de l'AWS CLI. Vous n'avez pas besoin d'une connexion fonctionnelle pour vous connecter à votre instance lorsque vous utilisez l'EC2 Serial Console.

Avant d'utiliser la Serial Console pour le dépannage, procédez comme suit :

  • Accorder l'accès à la Serial Console au niveau du compte
  • Créer des politiques AWS Identity and Access Management (IAM) accordant l'accès à vos utilisateurs IAM
  • Vérifier que votre instance inclut au moins un utilisateur basé sur un mot de passe

Vérifier que l'instance est en cours d'exécution et transmet les deux vérifications d'état

Assurez-vous que l'instance est répertoriée comme « en cours d'exécution » dans la console Amazon EC2. Si votre instance n'est pas en cours d'exécution ou si vous rencontrez un autre problème de vérification d'état, suivez les étapes décrites dans Pourquoi mon instance Linux EC2 est-elle inaccessible et une ou les deux vérifications de son statut échouent-elles ?

Vérifier que l'instance démarre correctement

Vérifiez si les journaux système de l'instance comportent des erreurs de démarrage.

Vérifier la configuration du groupe de sécurité de l'instance et de la liste ACL réseau

Vérifier que l'instance possède la configuration DNS correcte

Vérifier que le serveur Web est en cours d'exécution et qu'aucun pare-feu au niveau du système d'exploitation ne bloque l'accès aux ports

Les ports réseau sont les points de terminaison de communication auxquels les différents services envoient des demandes. notamment les demandes de connexion au site Web des utilisateurs. Les serveurs Web écoutent le trafic HTTP sur le port 80 et utilisent le port 443 pour le trafic chiffré avec TLS/SSL. Si le serveur Web n'est pas en cours d'exécution ou si des pare-feu bloquent ces ports, les utilisateurs ne peuvent pas se connecter à votre site Web.

Pour vérifier si le site Web s'exécute localement, exécutez cette commande depuis le site Web d'hébergement de l'instance EC2 :

curl https://localhost

-ou-

curl http://localhost:443

1.    Connectez-vous à distance à l'instance via SSH.

2.    Vérifiez l'état du serveur Web.

  • Pour les systèmes RHEL ou CentOS, utilisez la commande systemctl status httpd pour vérifier l'état du serveur Web. La commande renvoie des informations indiquant que le serveur Web est inactif :
$ 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)
  • Pour les systèmes Debian ou Ubuntu, utilisez la commande systemctl status httpd pour vérifier l'état du serveur Web. Le serveur Web doit être à l'écoute sur le port 80 ou 443. La commande renvoie des informations indiquant que le serveur Web est inactif :
$ 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.    Pour redémarrer le serveur Web, exécutez cette commande :

  • Pour les systèmes REHL ou CentOS :
$ sudo systemctl restart httpd
  • Pour les systèmes Debian ou Ubuntu, exécutez cette commande :
$ sudo systemctl restart apache2

4.    Vérifiez que le serveur Web est en cours d'exécution :

  • Pour les systèmes REHL ou CentOS, exécutez cette commande :
$ 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
  • Pour les systèmes Debian ou Ubuntu, exécutez cette commande :
$ sudo systemctl status apache2
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running)

Remarque : pour les anciens systèmes Linux exécutant SystemV, exécutez cette commande pour vérifier l'état du serveur Web.
Pour les systèmes Debian ou Ubuntu, vous devez remplacer httpd par apache2 :

$ sudo service httpd status
httpd is stopped

Pour redémarrer un serveur Web arrêté sur SystemV, exécutez cette commande :

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

5.    Exécutez cette commande pour vérifier que le serveur Web écoute sur le port 80 ou le port 443 les demandes de connexion entrantes des utilisateurs :

  • Pour les systèmes REHL ou CentOS, exécutez cette commande :
$ sudo netstat -tulpn | grep httpd
tcp        0      0 :::80                       :::*                        LISTEN      2961/httpd
  • Pour les systèmes Debian ou Ubuntu, exécutez cette commande :
$ sudo netstat -tulpn | grep apache2
tcp6       0      0 :::80                   :::*                    LISTEN      2741/apache2

6.    Vérifiez l'état des pare-feu au niveau du système d'exploitation. Si vous trouvez un pare-feu actif, assurez-vous qu'il autorise les demandes sur les ports 80 et 443.

Remarque : si plusieurs interfaces sont en cours d'exécution, vérifiez que le serveur Web écoute toutes les adresses IP en utilisant cette commande :

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

Voici des exemples de sorties réussies :

Listen *:80

-ou-

Listen *:443

Amazon Linux, CentOS et RHEL :

1.    Utilisez cette commande pour vérifier que les règles iptables bloquent les demandes entrantes sur les ports 80 et 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.    Utilisez cette commande pour autoriser le port 80 à accepter les demandes de connexion HTTP entrantes :

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

3.    Utilisez cette commande pour autoriser le port 443 à accepter les demandes de connexion HTTPS entrantes :

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

Amazon Linux 2 et RHEL 7 et versions ultérieures :

1.    Utilisez cette commande pour vérifier que firewalld est en cours d'exécution :

$ sudo firewall-cmd --state
running

2.    Si firewalld est en cours d'exécution, utilisez ces commandes pour le configurer afin d'autoriser les connexions sur les ports 80 et 443. La dernière commande de cet exemple recharge le service pour que les nouvelles règles prennent effet :

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

Serveurs Debian et Ubuntu :

1.    Utilisez cette commande pour vérifier la présence d'un pare-feu UFW :

$ sudo ufw status verbose
Status: active

2.    Si UFW est en cours d'exécution, utilisez cette commande pour autoriser les demandes de connexion entrantes sur les ports 80 et 443 :

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

Vérifiez vos journaux d'erreurs d'accès au serveur Web pour détecter les problèmes. Les journaux du serveur Web se trouvent dans /var/log. Cet emplacement peut changer en fonction de la configuration de votre serveur. Voici les emplacements de journaux du serveur Web par défaut :

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

Informations connexes

Comment résoudre les problèmes de connexions lentes à un site Web hébergé sur mon instance EC2 ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 10 mois
Aucun commentaire