Perché non riesco a connettermi a un sito Web ospitato sulla mia istanza EC2?
Non riesco a connettermi a un sito Web pubblico ospitato sulla mia istanza Amazon Elastic Compute Cloud (Amazon EC2).
Breve descrizione
Per risolvere un errore relativo a un sito web non raggiungibile, verifica che le impostazioni di configurazione dell'istanza EC2 siano corrette. Ad esempio, se l'istanza non si avvia correttamente o non dispone delle configurazioni DNS corrette, non puoi connetterti ad alcun sito web ospitato su quell'istanza.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Utilizza SSH o il Gestore di sessioni SSM per connetterti all'istanza. Se nessuno dei due metodi è disponibile, utilizza la console seriale EC2 per connetterti alle istanze create sul sistema Nitro.
Verifica che l'istanza sia in esecuzione e che superi entrambi i controlli di stato
Assicurati che l'istanza sia in esecuzione nella console Amazon EC2. Se riscontri un problema con il controllo dello stato, segui i passaggi in Perché la mia istanza Linux EC2 è irraggiungibile e non supera i controlli di stato? Verifica che l'istanza si avvii correttamente. Per ulteriori informazioni, consulta Output della console dell'istanza o Acquisizione di uno screenshot di un'istanza irraggiungibile.
Controlla i log di sistema dell'istanza per verificare la presenza di errori di avvio.
Utilizza i seguenti metodi per verificare la presenza di errori di avvio:
- Se ricevi un errore Kernel panic, consulta How do I fix a "Kernel panic - not syncing" error with EC2 instances? ( Come posso correggere un errore "Kernel panic - not syncing" di un'istanza EC2?)
- Se i log di sistema contengono errori di avvio, consulta I controlli dello stato delle istanze sulla mia istanza Linux EC2 hanno esito negativo a causa di problemi del sistema operativo. In che modo posso risolvere il problema?
Controlla il gruppo di sicurezza dell'istanza e la configurazione dell'ACL di rete
Utilizza i seguenti metodi per verificare la configurazione dell'istanza:
- Assicurati che il gruppo di sicurezza associato all'istanza e l'ACL di rete consentano il traffico sulle porte 80 e 443.
- Assicurati che la tabella di routing nella sottorete dell'istanza disponga di una route predefinita verso un gateway Internet.
Verifica che l'istanza abbia la configurazione DNS corretta
Utilizza i seguenti metodi per verificare la configurazione dell'istanza:
- Se il sito web utilizza il servizio DNS Route 53, verifica di aver configurato correttamente i record DNS.
- Assicurati che all'istanza sia assegnato un indirizzo IP elastico. Se interrompi e avvii l'istanza, l'indirizzo IP elastico è ancora associato all'istanza.
- Assicurati di mappare l'indirizzo IP pubblico o l'indirizzo IP elastico a un record A.
Verifica che il server Web sia in esecuzione e che non vi siano firewall a livello di sistema operativo che bloccano l'accesso alle porte
Le porte di rete sono gli endpoint di comunicazione a cui i vari servizi inviano richieste. Queste includono le richieste di connessione al sito Web degli utenti. I server Web ascoltano sulla porta 80 il traffico HTTP e utilizzano la porta 443 per il traffico crittografato con TLS/SSL. Se il server web non è in esecuzione o i firewall bloccano queste porte, gli utenti non potranno connettersi al sito web. Completa i seguenti passaggi:
-
Per verificare se il sito web è in esecuzione in locale, esegui il seguente comando dal sito web che ospita l'istanza EC2:
curl https://localhost
-oppure-
curl http://localhost:443
Nota: se riscontri problemi quando utilizzi il comando curl, verifica se sono presenti problemi con il server di web hosting dell'istanza. Inoltre, controlla la configurazione dell'applicazione nell'istanza.
Connettiti all'istanza utilizzando SSH, il Gestore di sessioni SSM o la console seriale EC2. -
Controlla lo stato del servizio del server web.
Per i sistemi RHEL, CentOS, Fedora e Amazon Linux, esegui il comando systemctl status httpd per verificare lo stato del server web. Il comando restituisce l'informazione che il server web è inattivo:$ sudo systemctl status httpd.service The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: inactive (dead)
Per i sistemi Debian o Ubuntu, utilizza il comando systemctl status apache2 per controllare lo stato del server web. Il server web deve essere in ascolto sulla porta 80 o 443. Il comando restituisce l'informazione che il server web è inattivo:
$ sudo systemctl status apache2.service The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: disabled) Active: inactive (dead)
-
Per avviare il server web e attivare il servizio in modo che parta sempre all'avvio, esegui i seguenti comandi:
Per i sistemi RHEL, CentOS, Fedora e Amazon Linux:$ sudo systemctl start httpd; sudo systemctl enable httpd
Per i sistemi Debian o Ubuntu:
$ sudo systemctl start apache2; sudo systemctl enable apache2
-
Verifica che il servizio del server web sia in esecuzione e attivato:
Per i sistemi RHEL, CentOS, Fedora e Amazon Linux, esegui il seguente comando:$ sudo systemctl status httpd.service The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)Active: active (running)
Per i sistemi Debian o Ubuntu, esegui il seguente comando:
$ sudo systemctl status apache2.service The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)Active: active (running)
Nota: per i sistemi Linux su cui è in esecuzione SystemV, esegui il seguente comando per controllare lo stato del server web.
Per i sistemi Debian o Ubuntu, devi sostituire httpd con apache2:$ sudo service httpd statushttpd is stopped
Per riavviare un server web arrestato su SystemV, esegui il seguente comando:
$ sudo service httpd start Starting httpd: [ OK ]
-
Per verificare che il server web sia in ascolto sulla porta 80 o 443 per richieste di connessione in entrata dagli utenti, esegui il seguente comando:
$ sudo netstat -tulpn | grep -iP 'httpd|apache2' tcp 0 0 :::80 :::* LISTEN 2961/httpd
Nota: se sono in esecuzione più interfacce, verifica che il server web sia in ascolto su tutti gli IP eseguendo il seguente comando:
cat /etc/httpd/conf/httpd.conf | grep Listen
Di seguito sono riportati alcuni esempi di output:
Listen *:80
-oppure-
Listen *:443
-
Verifica lo stato dei firewall a livello di sistema operativo. Se un firewall è attivo, assicurati che consenta richieste sulle porte 80 e 443.
(Facoltativo) Per controllare che le regole iptables blocchino le richieste in entrata sulle porte 80 e 443, esegui il seguente comando:$ sudo iptables -vnL 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
L'output del precedente comando IPTables mostra che sono consentiti solo ICMP, localhost e la porta 22/TCP (SSH). Ciò significa che le connessioni in entrata sulle porte 80/TCP e 443/TCP vengono bloccate o rifiutate.
Per consentire alle porte 80 e 443 di accettare richieste di connessione HTTP e HTTPS in entrata, esegui il seguente comando:$ iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT
L'output di seguito mostra che la regola multi-porta viene aggiunta alle porte del servizio del server web, 80/TCP e 443/TCP.
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
Per Amazon Linux 2023, Amazon Linux 2 e RHEL 7 e versioni successive
Per verificare se il servizio firewalld è in esecuzione, esegui il seguente comando:
$ sudo firewall-cmd --staterunning
Se il servizio firewalld è in esecuzione, esegui i seguenti comandi per consentire connessioni sulle porte 80/TCP e 443/TCP. L'ultimo comando dell'esempio ricarica il servizio per rendere effettive le nuove regole aggiunte:
$ sudo firewall-cmd --add-service=http --permanent success $ sudo firewall-cmd --add-service=https --permanent success $ sudo firewall-cmd --reload success
Per server Debian e Ubuntu
Completa i seguenti passaggi:
-
Per verificare la presenza di un firewall semplice (UFW), esegui il seguente comando:
$ sudo ufw status verbose Status: active
-
Se è in esecuzione un UFW, utilizza il seguente comando per consentire richieste di connessione in entrata sulle porte 80/TCP e 443/:
$ sudo ufw allow in 80/tcp Rule added Rule added (v6) $ sudo ufw allow 443/tcp Rule added Rule added (v6)
Controlla i log degli errori di accesso al server web per individuare eventuali problemi. I log del server web si trovano in /var/log. Di seguito sono riportati i percorsi predefiniti dei log del server web:
- Amazon Linux e RHEL: /var/log/httpd
- Debian e Ubuntu: /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?
Video correlati


Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 3 anni fa