Qualsiasi server web che riceve una richiesta HTTP riceve come risposta un codice di stato HTTP. Questi codici sono brevi note del server che descrivono la situazione. Non contengono alcun contenuto effettivo del sito. Si tratta invece di un report su come sono andate le cose dopo aver ricevuto la richiesta HTTP. In molte situazioni, questi codici sono importanti per diagnosticare vari problemi del server/client.
Questi codici sono numeri interi di tre cifre, ognuno dei quali indica vari stati. In base alla prima cifra, i codici HTTP si dividono in cinque categorie:
-
Risposte informative: il valore va da 100 a 199. Descrive che la richiesta è stata ricevuta ed è in fase di elaborazione.
-
Risposte di successo: il valore va da 200 a 299. Indica che l'azione è stata ricevuta, compresa e accettata con successo.
-
Messaggi di reindirizzamento: il valore va da 300 a 399. Significa che sono necessarie ulteriori azioni per completare la richiesta.
-
Risposte di errore del client: il valore va da 400 a 499. La richiesta contiene una sintassi errata o non può essere soddisfatta.
-
Risposte di errore del server: il valore va da 500 a 599. Significa che il server non è riuscito a elaborare una richiesta valida.
In questa guida parleremo di alcuni dei codici di errore HTTP più comuni che tutti incontrano (4xx e 5xx), dal punto di vista di un amministratore di sistema. Numerose situazioni possono portare il server web a rispondere con un codice particolare. Inoltre, questo tutorial analizzerà le potenziali cause e soluzioni.
Errori del client vs Errori del server
I codici di errore da 400 a 499 derivano dal client dell'utente (un browser web o qualsiasi client HTTP). Sebbene gli errori siano per lo più legati al client, è utile sapere quale codice sta riscontrando un utente. Può aiutare a determinare se un potenziale problema possa risiedere sul lato server.
Gli errori del server (codici di stato HTTP da 500 a 599), invece, si verificano quando il server è consapevole che si è verificato un errore o non è in grado di elaborare la richiesta.
Risoluzione dei problemi generale
Indipendentemente dall'errore, ecco alcuni consigli generali per la risoluzione dei problemi che dovresti provare per primi ogni volta che riscontri un codice di errore HTTP:
-
Quando si usa un browser web per testare il server, è buona norma aggiornare il browser dopo aver apportato qualsiasi modifica al server.
-
Il log del server contiene informazioni dettagliate su come il server gestisce le richieste. Ad esempio, server web popolari come Apache e Nginx producono i file access.log e error.log. Controllare questi log può rivelare informazioni utili.
-
I codici di errore HTTP fanno parte di uno standard. I programmi implementano questo standard in base a come gestiscono le richieste. Ciò significa che viene restituito un particolare codice di stato a seconda di come il software del server gestisce quel particolare errore.
Questa guida dovrebbe servire come utile linea guida per individuare l'origine del problema.
Errori HTTP comuni
-
Errori comuni del client

Il codice di errore 400 indica una Bad Request. Descrive che la richiesta HTTP inviata al server contiene una sintassi non valida. Diamo un’occhiata alle potenziali fonti di sintassi errata:
-
I cookie relativi al sito potrebbero essere danneggiati. Pulire i cookie e la cache del browser potrebbe risolvere il problema.
-
Il browser web che invia la richiesta potrebbe essere difettoso o presentare dei bug.
-
Potrebbe trattarsi di una richiesta errata a causa di un errore nella formulazione manuale delle richieste HTTP, ad esempio un uso errato di curl.

Il codice di errore 401 (Unauthorized) si verifica quando la richiesta tenta di accedere a risorse che non sono state autenticate o non sono state autenticate correttamente. Per risolvere il problema, l'utente deve fornire le credenziali necessarie per accedere alla risorsa protetta.
Un esempio di situazione si ha quando l'utente tenta di accedere a una risorsa protetta da autenticazione HTTP. In tal caso, l'utente riceverà un codice di errore 401 a meno che non vengano forniti un nome utente e una password validi.

Il codice di errore 403 (Forbidden) si riferisce a una situazione in cui la richiesta dell'utente è valida ma il server si rifiuta di soddisfarla. Ciò può essere dovuto alla mancanza di autorizzazioni per accedere alla risorsa richiesta. Ci sono alcuni scenari che possono portare a questo problema:
-
Permessi dei file: se il server non ha autorizzazioni sufficienti per accedere al file richiesto, ciò può causare un errore 403. Le possibili soluzioni includono la verifica che il server stia tentando di accedere al file index del server web, che il processo worker sia di proprietà dell’utente www-data, e che il file index si trovi nella posizione corretta (nel caso di Nginx, è /usr/share/nginx/html/index.html).
-
.htaccess: I server web utilizzano il file .htaccess per implementare varie funzionalità di sicurezza, ad esempio il filtraggio di indirizzi o intervalli IP specifici. Una possibile soluzione consiste nel verificare che l’indirizzo IP da cui proviene la richiesta HTTP non sia bloccato.
-
Il file non esiste: se la richiesta tenta di accedere a una posizione che non ha un file index predefinito e l’elenco delle directory non è abilitato, il server restituirà l’errore 403. In una situazione del genere, una possibile soluzione consiste nel modificare la configurazione del server per consentire l’elenco delle directory.

Il codice di errore 404 (Not Found) significa che l’utente è riuscito a connettersi correttamente al server web ma non è stato in grado di trovare la risorsa richiesta. Questo errore può verificarsi in diverse situazioni. Ecco alcune possibili azioni di risoluzione dei problemi:
-
Verificare la presenza di eventuali errori di battitura nel link che ha indirizzato l’utente alla risorsa del server.
-
L’utente potrebbe aver digitato l’URL in modo errato. Verificare se questo è il caso e correggerlo se necessario.
-
Verificare l’esistenza del file sul server. È stato spostato o eliminato dal server?
-
Il server potrebbe essere configurato con una posizione della root del documento errata. Verificare questo aspetto e correggerlo se necessario.
-
Il processo worker del server web di proprietà dell’utente dispone dei permessi per scorrere il file richiesto? Si noti che per accedere a una directory sono necessari sia i permessi di lettura che di esecuzione.
-
La risorsa è un collegamento simbolico? In tal caso, il server deve essere configurato per seguire i collegamenti simbolici.
-
Errori comuni del server

Il codice di errore 500 (Internal Server Error) si verifica quando il server non è in grado di elaborare la richiesta per motivi sconosciuti. In alcune situazioni, il server segnalerà l’errore 500 quando sarebbe più appropriato un codice di errore 5xx più specifico.
Una delle cause più comuni dell’errore 500 è un server configurato in modo errato, ad esempio un file .htaccess malformato. Può anche verificarsi se mancano dei pacchetti, ad esempio se si tenta di eseguire codice PHP senza che PHP sia installato sul sistema.

Il codice di errore 502 (Bad Gateway) indica che il server è un proxy o un gateway e non riesce a ricevere una risposta valida dal server backend (responsabile dell’effettivo soddisfacimento della richiesta). Se il server è un reverse proxy, ad esempio un bilanciatore di carico, ci sono diversi elementi da verificare:
-
I server backend funzionano correttamente.
-
Il reverse proxy è configurato correttamente (con le specifiche di backend appropriate).
-
La connessione tra il reverse proxy e il server backend è corretta. Se i server possono comunicare utilizzando porte diverse, il firewall deve consentire la connessione a tali porte.
-
Se l’app web è configurata per utilizzare un socket, assicurarsi che il socket esista nella posizione corretta con i permessi appropriati.

Il codice di errore 503 (Service Unavailable) indica che il server è sovraccarico o è attualmente in manutenzione. Ciò implica che il server dovrebbe tornare disponibile a un certo punto.
Se il server non è in manutenzione, significa che non dispone delle risorse hardware necessarie (potenza di calcolo, memoria, ecc.) per gestire le richieste in arrivo. In tal caso, il server dovrebbe essere configurato per consentire più utenti o allocare più risorse.
Il codice di errore 504 (Gateway Timeout) indica che il server è un proxy o un server gateway e non ha ricevuto una risposta dal backend entro la finestra temporale consentita. Vi sono diverse situazioni che possono portare a questo problema:
-
Una cattiva connessione di rete tra i server.
-
Il server backend risponde troppo lentamente (a causa di problemi di prestazioni).
-
Il limite di timeout del server gateway/proxy è troppo ristretto.
Considerazioni finali
Questa guida tratta i codici di errore HTTP, in particolare alcuni dei più comuni. Descrive il significato dei codici e fornisce suggerimenti per potenziali azioni di risoluzione dei problemi. Con queste conoscenze, ora disponi di una solida base per risolvere i problemi con i tuoi server web o applicazioni.
Questo è solo un breve elenco dei codici di stato HTTP più popolari. Per un elenco completo di tutti i codici di stato HTTP, consulta i codici di stato HTTP su Wikipedia. Puoi anche dare un'occhiata al nostro tutorial su Nginx HTTP Proxying, Load Balancing, Buffering e Caching: una panoramica.
Buon computing!
Commenti
Ancora nessun commento. Scrivi il primo.