Passer au contenu

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

Lecture de 8 minute(s)
0

Je ne parviens pas à me connecter à un site Web public hébergé sur mon instance Amazon Elastic Compute Cloud (Amazon EC2).

Brève description

Pour résoudre les problèmes liés aux sites Web inaccessibles, vérifiez que vous avez correctement paramétré la configuration du site Web de votre instance EC2. Des paramètres de serveur Web incorrects sur votre instance bloquent l'accès à tous les sites Web qui y sont hébergés.

Résolution

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

Consultez la console Amazon EC2 pour vérifier que l'instance est en cours d'exécution. Si un échec de vérification d’état est annoncé, consultez la page Pourquoi mon instance Linux EC2 est-elle inaccessible et échoue-t-elle à l’une de ses vérifications d’état ou aux deux ?

Utilisez également la sortie de la console d'instance et un instantané de l'instance pour vérifier si l'instance démarre correctement.

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

Vérifiez les configurations d'instance suivantes :

Vérifier que la configuration DNS du site Web est correcte

Vérifiez les configurations DNS suivantes pour votre site Web :

Vérifier que le serveur Web fonctionne et qu'aucun pare-feu du système d'exploitation ne bloque l'accès aux ports

Pour vérifier la configuration de votre port réseau et votre serveur Web, procédez comme suit :

  1. Utilisez SSH ou le Gestionnaire de session, une fonctionnalité d'AWS Systems Manager, pour vous connecter à l'instance. Si vous ne pouvez pas utiliser SSH ou le Gestionnaire de session pour vous connecter à des instances créées sur le système AWS Nitro, utilisez l’EC2 Serial Console.

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

    curl https://localhost

    -ou-

    curl http://localhost:443

    Remarque : Si vous rencontrez des problèmes lorsque vous utilisez curl, vérifiez l'existence de problèmes liés à la configuration du serveur Web et de l'application de l'instance.

  3. Pour vérifier l'état du service du serveur Web, exécutez la commande suivante en fonction du système d'exploitation que vous exécutez.
    Red Hat Enterprise Linux (RHEL), CentOS, Fedora et Amazon Linux :

    sudo systemctl status httpd.service

    Exemple de sortie :

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

    Debian et Ubuntu :

    sudo systemctl status apache2.service

    Exemple de sortie :

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

    Dans la sortie de commande, vérifiez l'état inactif (mort).
    Si votre système Linux exécute System V, exécutez la commande suivante pour vérifier l'état du serveur Web :

    sudo service httpd status

    Remarque : Si vous utilisez Debian ou Ubuntu, remplacez httpd par apache2.
    Exemple de sortie :

    httpd is stopped
  4. Pour démarrer le serveur Web et définir le service afin qu'il se lance au démarrage, exécutez les commandes suivantes en fonction de votre système d’exploitation :
    RHEL, CentOS, Fedora et Amazon Linux :

    sudo systemctl start httpd; sudo systemctl enable httpd

    Debian ou Ubuntu :

    sudo systemctl start apache2; sudo systemctl enable apache2
  5. Pour vérifier que le service de serveur Web est en cours d'exécution et activé, exécutez les commandes suivantes en fonction de votre système d'exploitation :
    RHEL, CentOS, Fedora et Amazon Linux :

    sudo systemctl status httpd.service

    Exemple de sortie :

    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

    Exemple de sortie :

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

    Pour démarrer un service de serveur Web arrêté pour les systèmes qui s'exécutent sur System V, exécutez la commande suivante :

    sudo service httpd start

    Exemple de sortie :

    Starting httpd:                                            [  OK  ]
  6. Pour vérifier que le serveur Web écoute les demandes de connexion entrantes des utilisateurs, exécutez la commande suivante :

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

    Remarque : Exécutez la commande précédente à deux reprises. La deuxième fois, remplacez 80 par 443. Les serveurs Web écoutent le trafic HTTP sur le port 80 et le trafic sur le port 443 pour le trafic chiffré avec TLS/SSL.
    Si vous exécutez plusieurs interfaces, exécutez la commande suivante pour vérifier que le serveur Web écoute toutes les adresses IP :

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

    Exemples de sortie :

    Listen *:80
    Listen *:443
  7. Si vous utilisez un pare-feu de système d’exploitation, assurez-vous qu'il autorise les requêtes sur les ports 80 et 443.

  8. (Facultatif) Pour vérifier que les règles iptables autorisent les requêtes entrantes sur les ports 80 et 443, exécutez la commande suivante :

    sudo iptables -vnL

    Exemple de sortie :

    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

    Dans l'exemple de sortie précédent, les règles autorisent uniquement le protocole ICMP (Internet Control Message Protocol), localhost et le port 22/TCP (SSH). Les règles bloquent les connexions entrantes vers le port TCP 80 ou 443.

  9. Pour configurer les règles iptables afin de permettre aux ports 80 et 443 d'accepter les demandes de connexion HTTP et HTTPS entrantes, exécutez la commande suivante :

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

    Exemple de sortie :

    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

Vérifiez les configurations pour AL2023, AL2 et RHEL 7 et versions ultérieures

Pour les instances Amazon Linux 2023 (AL2023), Amazon Linux 2 (AL2) et RHEL, exécutez la commande suivante pour vérifier si le service firewalld est en cours d'exécution :

sudo firewall-cmd --state

Exemple de sortie :

running

Si le service firewalld est en cours d'exécution, exécutez les commandes suivantes pour autoriser les connexions sur les ports TCP 80 et 443 :

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

Remarque : Si vous avez déjà ajouté des règles, la commande reload recharge le service et applique les règles.

Pour chaque commande, vérifiez que la sortie est similaire à l'exemple suivant :

success

Vérifier les configurations des serveurs Debian et Ubuntu

Procédez comme suit :

  1. Pour vérifier la présence d'un pare-feu simplifié (UFW), exécutez la commande suivante :

    sudo ufw status verbose

    Exemple de sortie :

    Status:  active
  2. Si vous exécutez un UFW, utilisez la commande suivante pour autoriser les demandes de connexion entrantes sur les ports TCP requis :
    Port TCP 80 :

    sudo ufw allow in 80/tcp

    Port TCP 443 :

    sudo ufw allow 443/tcp
  3. Pour chaque commande, vérifiez que la sortie est similaire à l'exemple suivant :

    Rule added
    Rule added (v6)

Pour résoudre les problèmes, consultez les journaux des erreurs d'accès à votre serveur Web sur /var/log. Utilisez les emplacements de journaux du serveur Web par défaut suivants :

  • Pour Amazon Linux et RHEL, utilisez /var/log/httpd.
  • Pour Debian et Ubuntu, utilisez /var/log/apache2.

Remarque : L'emplacement du journal de serveur Web dépend de la configuration de votre serveur.

Informations connexes

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

AWS OFFICIELA mis à jour il y a 9 mois