Verifica della Porta 80: Guida alla Risoluzione dei Problemi HTTP

Guida alla risoluzione dei problemi della porta HTTP 80 con connessioni di rete, strumenti diagnostici e configurazione delle porte

Verificare se la porta 80 è aperta ti dice se il tuo web server è raggiungibile via HTTP - il protocollo che i browser usano di default quando digiti un URL senza "https://". Se la porta 80 è bloccata o non è in ascolto, i visitatori ricevono errori di connessione e il tuo sito diventa irraggiungibile. Ecco come diagnosticare e risolvere il problema.

A cosa serve davvero la porta 80

La porta 80 è la porta TCP di default per HTTP (Hypertext Transfer Protocol) . Quando un browser si connette a http://example.com , punta automaticamente alla porta 80 sull'indirizzo IP di quel server. Il software server - Apache, Nginx, IIS, Caddy o qualsiasi altro - deve essere attivamente in ascolto sulla porta 80 affinché la connessione vada a buon fine.

La porta 80 è definita nel registro ufficiale delle porte IANA ed è standardizzata nell'RFC 9110. È una porta "well-known": i numeri da 0 a 1023 sono riservati ai servizi di sistema e richiedono privilegi elevati per essere associati su Linux/macOS.

Come verificare se la porta 80 è aperta

Esistono diversi modi per controllare se la porta 80 è aperta, a seconda che tu stia eseguendo il test in locale (direttamente sul server) o da remoto (da un'altra macchina o da internet).

Usare telnet

Telnet è il test manuale più rapido. Eseguilo da qualsiasi macchina che abbia accesso di rete all'host di destinazione:

telnet example.com 80

Se la porta 80 è aperta e un web server è in ascolto, vedrai un cursore vuoto o un banner HTTP. Se è chiusa o filtrata, riceverai "Connection refused" oppure il comando rimarrà in attesa fino al timeout.

Usare curl

curl fornisce maggiori dettagli - mostra la risposta HTTP effettiva:

curl -v http://example.com

Il flag -v stampa un output dettagliato, incluso il handshake TCP e gli header della risposta. Una connessione riuscita mostra * Connected to example.com (93.184.216.34) port 80 . Un errore mostra curl: (7) Failed to connect .

Usare nmap

nmap è lo standard di riferimento per la scansione delle porte. Per testare specificamente la porta 80:

nmap -p 80 example.com

Il risultato mostrerà uno di tre stati: open (qualcosa è in ascolto), closed (la porta è raggiungibile ma nessun servizio è in ascolto), oppure filtered (un firewall sta scartando i pacchetti e nmap non riesce a determinare lo stato).

Filtered vs. Closed: "Filtered" indica in genere che un firewall sta scartando silenziosamente i pacchetti. "Closed" significa che il server risponde con un TCP RST - la porta è raggiungibile ma nessun servizio vi è associato. Le due situazioni richiedono interventi diversi.

Usare PowerShell su Windows

Test-NetConnection -ComputerName example.com -Port 80

Il cmdlet Test-NetConnection di PowerShell restituisce un chiaro TcpTestSucceeded : True o False , il che lo rende facile da usare negli script. Per una guida completa sul controllo delle porte su Windows, consulta il controllo delle porte aperte su Windows .

Usare netstat per analizzare la porta 80

Quando sei direttamente sul server, netstat ti mostra esattamente quale processo è associato alla porta 80. È lo strumento giusto quando devi rispondere alla domanda "c'è qualcosa in ascolto sulla porta 80 su questa macchina?"

Linux / macOS

sudo netstat -tlnp | grep :80

Spiegazione dei flag:

  • -t - solo connessioni TCP
  • -l - solo socket in ascolto
  • -n - mostra gli indirizzi numerici (più veloce, salta i lookup DNS)
  • -p - mostra il nome del processo e il PID

Un risultato tipico appare così: tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx . Questo indica che nginx (PID 1234) è in ascolto su tutte le interfacce sulla porta 80.

Sui sistemi Linux moderni, ss è più veloce ed è preferito rispetto a netstat :

sudo ss -tlnp | grep :80

Windows

netstat -ano | findstr :80

Questo elenca tutte le connessioni sulla porta 80 con il relativo PID. Per trovare il nome del processo a partire dal PID (ad esempio PID 4892):

tasklist /fi "pid eq 4892"
La porta 80 è occupata da un processo inatteso? Su Windows, "System" (PID 4) spesso occupa la porta 80 se IIS è installato e in esecuzione. Su Linux, se qualcosa di diverso dal tuo web server detiene la porta 80, il server che intendi usare non riuscirà ad avviarsi e restituirà un errore "address already in use".

Diagnosticare la porta 80 bloccata dal firewall

Un blocco del firewall è la causa più comune per cui la porta 80 risulta chiusa dall'esterno anche quando il tuo web server funziona correttamente in locale. Il blocco può avvenire a tre livelli:

Livello Dove controllare Strumento
Firewall del sistema operativo (server) iptables / ufw (Linux), Windows Defender Firewall iptables -L -n o regole di Windows Firewall
Security group cloud AWS EC2 Security Groups, Azure NSG, GCP Firewall Rules Regole in entrata nella console cloud
Firewall di rete/ISP ACL del router, blocco porte residenziali dell'ISP Contatta l'ISP o usa uno scanner di porte esterno

Controllare iptables su Linux

sudo iptables -L INPUT -n -v | grep 80

Se vedi una regola DROP o REJECT per la porta 80, quello è il problema. Per consentire la porta 80 con ufw:

sudo ufw allow 80/tcp
sudo ufw reload

Controllare i Security Group di AWS

Se il tuo server è su EC2, vai alla console EC2 - Security Groups - Regole in entrata. Hai bisogno di una regola che consenta il traffico TCP sulla porta 80 da 0.0.0.0/0 (o dal tuo intervallo di IP specifico). Senza questa regola, tutto il traffico sulla porta 80 viene scartato prima ancora di raggiungere il firewall del sistema operativo.

Per un'analisi più approfondita della diagnostica delle porte lato Linux, la guida completa al controllo delle porte aperte su Linux tratta in dettaglio iptables, ufw, firewalld e nftables.

Porta HTTP non risponde: cause comuni e soluzioni

Quando la porta HTTP non risponde, il problema rientra in una di queste categorie:

  • Web server non in esecuzione - Controlla con systemctl status nginx o systemctl status apache2 . Se è fermo, avvialo: sudo systemctl start nginx .
  • Web server andato in crash all'avvio - Controlla i log: sudo journalctl -u nginx --since "10 minutes ago" . Un errore di sintassi nella configurazione o un conflitto di porta verranno registrati qui.
  • Server associato solo a localhost - Se la configurazione del server indica listen 127.0.0.1:80 invece di listen 0.0.0.0:80 , non accetterà connessioni esterne. Correggi l'indirizzo di bind nella configurazione del server.
  • Porta 80 già in uso - Un altro processo ha occupato la porta 80 prima che il tuo web server si avviasse. Usa netstat per identificarlo, quindi fermalo o riconfigura uno dei due servizi.
  • SELinux o AppArmor bloccano il bind - Sui sistemi RHEL/CentOS, SELinux può impedire a un processo non standard di associarsi alla porta 80. Controlla ausearch -m AVC -ts recent per i rifiuti.
Verifica rapida: Esegui curl http://127.0.0.1 direttamente sul server. Se funziona ma le connessioni esterne falliscono, il problema è un firewall o una regola di rete - non il web server in sé.

Testare la porta 80 dall'esterno della tua rete

Testare dalla tua macchina può essere fuorviante - potresti trovarti sulla stessa LAN del server, bypassando le regole del firewall che si applicano al traffico esterno. Per testare la porta 80 come la sperimenta un visitatore reale, hai bisogno di un test esterno.

Puoi controllare gli header di risposta HTTP del tuo server dall'esterno usando il nostro strumento HTTP Headers Checker . Recupera gli header dal tuo URL e mostra esattamente ciò che riceve un browser - codici di stato, tipo di server, catene di redirect e altro ancora - tutto da un punto di osservazione esterno.

Altre opzioni esterne:

  • Scanner di porte online - Siti come portchecker.co o canyouseeme.org ti permettono di inserire un IP e un numero di porta per testare dai loro server.
  • Da un VPS o cloud shell - Avvia un'istanza cloud gratuita in una regione diversa ed esegui nc -zv your-server-ip 80 da lì.
  • Usando nc (netcat) in locale - nc -zv example.com 80 fornisce un risultato rapido aperto/chiuso senza installare nulla di aggiuntivo sulla maggior parte dei sistemi Linux/macOS.

Porta 80 vs porta 443: quando conta ciascuna

La porta 443 gestisce HTTPS (HTTP cifrato tramite TLS). La maggior parte dei siti moderni reindirizza immediatamente tutto il traffico sulla porta 80 verso la porta 443. Ma la porta 80 rimane importante per diversi motivi:

  • Challenge HTTP-01 di ACME/Let's Encrypt - certbot di Let's Encrypt usa la porta 80 per verificare la proprietà del dominio. Se la porta 80 è bloccata, l'emissione del certificato fallisce.
  • Servizi interni senza TLS - Molti strumenti interni, agenti di monitoraggio e microservizi comunicano tramite HTTP semplice sulla porta 80 all'interno di una rete privata.
  • Client legacy e dispositivi IoT - Alcuni dispositivi embedded e client più datati non supportano TLS e si affidano alla porta 80.
  • Infrastruttura di redirect - Anche se servi tutto tramite HTTPS, hai bisogno della porta 80 aperta per intercettare e reindirizzare le richieste HTTP, evitando che gli utenti ricevano un errore di connessione.
Buona pratica: Tieni la porta 80 aperta ma configura il tuo web server per emettere un redirect permanente 301 da HTTP a HTTPS. Questo ti garantisce la sicurezza di TLS mantenendo la porta 80 funzionante per i redirect e i rinnovi dei certificati.
Strumento HTTP headers checker per il troubleshooting della porta 80

Scopri immediatamente cosa restituisce la porta 80

Il nostro HTTP Headers Checker recupera la risposta in tempo reale da qualsiasi URL, così puoi confermare che la porta 80 è aperta, verificare le catene di redirect e vedere i codici di stato esatti che il tuo server invia - senza riga di comando.

Controlla gli header HTTP ora →

Su Linux, esegui sudo ss -tlnp | grep :80 o sudo netstat -tlnp | grep :80 . Entrambi i comandi mostrano il nome del processo e il PID associati alla porta 80. Su Windows, usa netstat -ano | findstr :80 per ottenere il PID, poi tasklist /fi "pid eq [PID]" per trovare il nome del processo. I processi più comuni sono nginx, apache2, IIS e i server Node.js.

Usa gli stessi comandi netstat o ss ma filtra per 8080: sudo ss -tlnp | grep :8080 su Linux, oppure netstat -ano | findstr :8080 su Windows. La porta 8080 è una porta HTTP alternativa molto usata dai server di sviluppo, Tomcat, Jenkins e i proxy. Se qualcosa è già associato a quella porta, dovrai fermarlo o configurare il nuovo servizio su una porta diversa.

Sui web server dedicati e sulle istanze VPS, sì - la porta 80 è tipicamente aperta e prevista. Sulle connessioni internet residenziali, molti ISP bloccano la porta 80 in entrata per impedire ai clienti di ospitare server pubblici da casa. Sulle istanze cloud, la porta 80 è spesso chiusa di default nel security group finché non aggiungi esplicitamente una regola in entrata che la consenta.

Dall'esterno del server, usa nmap -p 80 your-server-ip o telnet your-server-ip 80 . Dal server stesso, usa ss -tlnp | grep :80 per confermare che qualcosa è in ascolto. Controlla anche le regole del firewall - su Linux con ufw, esegui sudo ufw status per vedere se la porta 80 è elencata come consentita.

Su Linux con ufw: sudo ufw allow 80/tcp . Con iptables direttamente: sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT . Su Windows, aggiungi una regola in entrata in Windows Defender Firewall per la porta TCP 80. Su un server cloud, aggiungi una regola in entrata nel tuo security group o network security group che consenta la porta TCP 80 dall'intervallo di sorgenti desiderato.

La porta 80 è aperta quando un web server è configurato per servire traffico HTTP, che è lo standard per qualsiasi sito pubblico. Rimane aperta anche sui server che reindirizzano HTTP verso HTTPS (porta 443), perché il redirect stesso richiede di accettare la connessione iniziale sulla porta 80. Strumenti di rinnovo dei certificati come certbot di Let's Encrypt richiedono inoltre la porta 80 per le challenge di validazione del dominio HTTP-01.

Apri Windows Defender Firewall con sicurezza avanzata, clicca su "Regole in entrata", poi su "Nuova regola". Scegli "Porta", seleziona TCP, inserisci 80 come porta locale specifica, scegli "Consenti la connessione", applica a tutti i profili (Dominio, Privato, Pubblico) e assegna un nome alla regola. In alternativa, esegui questo comando in un prompt PowerShell con privilegi elevati: New-NetFirewallRule -DisplayName "HTTP Port 80" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow .

Sì, su Linux e macOS la porta 80 è una porta privilegiata (le porte da 0 a 1023 richiedono i permessi di root o la capability CAP_NET_BIND_SERVICE per essere associate). Ciò significa che un processo utente normale non può mettersi in ascolto sulla porta 80 senza permessi elevati. Web server come nginx e Apache vengono tipicamente avviati come root per associarsi alla porta 80, per poi passare a un utente con privilegi ridotti per la gestione delle richieste. Su Windows non esiste una restrizione equivalente per la porta 80.

La porta 80 (HTTP) viene usata al posto della 443 (HTTPS) in scenari in cui TLS non è necessario o praticabile - come i microservizi interni su una rete privata affidabile, gli ambienti di sviluppo locale o i dispositivi IoT privi di supporto TLS. La porta 80 è inoltre richiesta per le challenge di certificato HTTP-01 di Let's Encrypt. Per qualsiasi sito pubblico, la porta 443 con TLS è fortemente preferita, con la porta 80 aperta solo per i redirect.

No, sono porte diverse. La porta 80 è lo standard assegnato da IANA per HTTP e viene usata automaticamente dai browser quando non viene specificata alcuna porta. La porta 8000 è un'alternativa non ufficiale comunemente usata dai server di sviluppo - il modulo python -m http.server di Python usa 8000 di default, così come il server di sviluppo di Django. Per raggiungere un servizio sulla porta 8000, devi specificarla esplicitamente nell'URL: http://example.com:8000 .