Pourquoi ne puis-je pas me connecter à un site Web hébergé sur mon instance EC2 ?
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.
- Si vous détectez une erreur de panique du noyau, veuillez consulter Je reçois une erreur « Kernel panic » (Panique du noyau) après avoir mis à niveau le noyau ou tenté de redémarrer mon instance EC2 Linux. Comment corriger ce problème ?
- Pour d'autres erreurs liées au système d'exploitation, voir La vérification de l'état de mon instance EC2 Linux a échoué en raison de problèmes liés au système d'exploitation. Comment résoudre ce problème ?
Vérifier la configuration du groupe de sécurité de l'instance et de la liste ACL réseau
- Assurez-vous que le groupe de sécurité et la liste ACL réseau associés à l'instance autorisent le trafic sur les ports 80 et 443 .
- Assurez-vous que la table de routage du sous-réseau de l'instance comporte un routage par défaut vers une passerelle Internet.
Vérifier que l'instance possède la configuration DNS correcte
- Si votre site Web utilise le service DNS Route 53, vérifiez que vous avez correctement configuré les registres DNS.
- Assurez-vous que l'instance dispose d'une adresse IP élastique qui lui est attribuée. Si vous arrêtez et démarrez votre instance, l'adresse IP élastique reste associée à l'instance.
- Veillez à mapper l'adresse IP publique ou l'adresse IP élastique à un registre A.
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 ?
Vidéos associées

Contenus pertinents
- demandé il y a 3 moislg...
- demandé il y a un moislg...
- demandé il y a 4 moislg...
- demandé il y a 6 moislg...
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans