Salta al contenuto

Perché non riesco a connettermi a un sito web ospitato sulla mia istanza EC2?

7 minuti di lettura
0

Non riesco a connettermi a un sito web pubblico ospitato sulla mia istanza Amazon Elastic Compute Cloud (Amazon EC2).

Breve descrizione

Per risolvere i problemi relativi a siti web irraggiungibili, verifica di aver effettuato correttamente la configurazione del sito web sull'istanza EC2. Impostazioni errate del server web sull'istanza bloccano l'accesso a tutti i siti web ospitati.

Risoluzione

Verifica che l'istanza sia in esecuzione e superi entrambi i controlli di stato

Controlla la console Amazon EC2 per verificare che l'istanza sia in esecuzione. Per risolvere i problemi relativi al controllo di stato, consulta Perché la mia istanza Linux EC2 è irraggiungibile e non supera i controlli di stato?

Inoltre, utilizza l'output della console dell'istanza e uno screenshot dell'istanza per verificare se l'istanza si avvia correttamente.

Controlla il gruppo di sicurezza dell'istanza e la configurazione dell'ACL di rete

Verifica le seguenti configurazioni dell'istanza:

Verifica che il sito web abbia la configurazione DNS corretta

Verifica le seguenti configurazioni DNS per il sito web:

Verifica che il server web sia in esecuzione e che nessun firewall del sistema operativo blocchi l'accesso alle porte

Per verificare la configurazione delle porte di rete e il server web, completa i seguenti passaggi:

  1. Utilizza SSH o Gestione sessione, una funzionalità di AWS Systems Manager, per connetterti all'istanza. Se non riesci a utilizzare SSH o Gestione sessione per connetterti a istanze costruite sull'AWS Nitro XSystem, utilizza la Console seriale EC2.

  2. Per verificare se il sito web è in esecuzione in locale, esegui questo comando dal sito web ospitato sull'istanza EC2:

    curl https://localhost

    -oppure-

    curl http://localhost:443

    Nota: se riscontri problemi quando usi curl, verifica la presenza di problemi con il server web dell'istanza e la configurazione dell'applicazione.

  3. Per verificare lo stato del servizio del server web, esegui questo comando in base al sistema operativo in esecuzione.
    Red Hat Enterprise Linux (RHEL), CentOS, Fedora e Amazon Linux:

    sudo systemctl status httpd.service

    Esempio di output:

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

    Debian e Ubuntu:

    sudo systemctl status apache2.service

    Esempio di output:

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

    Nell'output del comando, verifica se lo stato è inactive (inattivo).
    Se i sistemi Linux eseguono System V, esegui questo comando per verificare lo stato del server web:

    sudo service httpd status

    Nota: se utilizzi Debian o Ubuntu, sostituisci httpd con apache2.
    Esempio di output:

    httpd is stopped
  4. Per avviare il server web e impostare l'attivazione del servizio all'avvio, esegui questi comandi in base al sistema operativo:
    RHEL, CentOS, Fedora e Amazon Linux:

    sudo systemctl start httpd; sudo systemctl enable httpd

    Debian o Ubuntu:

    sudo systemctl start apache2; sudo systemctl enable apache2
  5. Per verificare che il servizio del server web sia in esecuzione e attivato, esegui questi comandi in base al sistema operativo:
    RHEL, CentOS, Fedora e Amazon Linux:

    sudo systemctl status httpd.service

    Esempio di output:

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

    Debian o Ubuntu:

    sudo systemctl status apache2.service

    Esempio di output:

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

    Per avviare un servizio server web arrestato per sistemi che eseguono System V, esegui questo comando:

    sudo service httpd start

    Esempio di output:

    Starting httpd:                                            [  OK  ]
  6. Per verificare che il server web sia in ascolto delle richieste di connessione utente in entrata, esegui questo seguente:

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

    Nota: esegui il comando precedente due volte. La seconda volta, sostituisci 80 con 443. I server web sono in ascolto sulla porta 80 per il traffico HTTP e sulla porta 443 per il traffico crittografato con TLS/SSL.
    Se utilizzi più interfacce, esegui questo comando per verificare che il server web sia in ascolto su tutti gli indirizzi IP:

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

    Esempi di output:

    Listen *:80
    Listen *:443
  7. Se utilizzi un firewall del sistema operativo, assicurati che consenta richieste sulle porte 80 e 443.

  8. (Facoltativo) Per verificare che le regole di iptables consentano richieste in entrata sulle porte 80 e 443, esegui questo comando:

    sudo iptables -vnL

    Esempio di output:

    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

    Nell'output di esempio precedente, le regole consentono solo Internet Control Message Protocol (ICMP), localhost e porta 22/TCP (SSH). Le regole bloccano le connessioni in entrata alla porta TCP 80 o 443.

  9. Per configurare le regole di iptables in modo da consentire alle porte 80 e 443 di accettare richieste di connessione HTTP e HTTPS in entrata, esegui questo comando:

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

    Esempio di output:

    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

Verifica le configurazioni per AL2023, AL2 e RHEL 7 e versioni successive

Per le istanze Amazon Linux 2023 (AL2023), Amazon Linux 2 (AL2) e RHEL, esegui questo comando per verificare se il servizio firewalld è in esecuzione:

sudo firewall-cmd --state

Esempio di output:

running

Se il servizio firewalld è in esecuzione, esegui questi comandi per consentire connessioni sulle porte 80/TCP e 443/TCP:

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

Nota: se in precedenza hai aggiunto regole, il comando reload ricarica il servizio e rende effettive le regole.

Per ogni comando, verifica che l'output sia simile all'esempio seguente:

success

Controlla le configurazioni per i server Debian e Ubuntu

Completa i seguenti passaggi:

  1. Per verificare la presenza di un firewall semplice (UFW), esegui questo comando:

    sudo ufw status verbose

    Esempio di output:

    Status:  active
  2. Se utilizzi un UFW, utilizza il seguente comando per consentire richieste di connessione in entrata sulle porte TCP necessarie:
    Porta TCP 80:

    sudo ufw allow in 80/tcp

    Porta TCP 443:

    sudo ufw allow 443/tcp
  3. Per ogni comando, verifica che l'output sia simile all'esempio seguente:

    Rule added
    Rule added (v6)

Per risolvere ulteriormente i problemi, controlla i log degli errori di accesso al server web in /var/log. Di seguito sono riportati i percorsi predefiniti dei log del server web:

  • Per Amazon Linux e RHEL, utilizza /var/log/httpd.
  • Per Debian e Ubuntu, utilizza /var/log/apache2.

Nota: il percorso del log del server web dipende dalla configurazione del server.

Informazioni correlate

Come posso risolvere i problemi di connessione lenta a un sito Web ospitato sulla mia istanza EC2?

AWS UFFICIALEAggiornata 6 mesi fa