Problema: Errore Nginx 403 nell'accesso a una directory
Quando si tenta di accedere a una directory su un server web con Nginx, potrebbe apparire un errore 403 Forbidden. Questo errore indica che il server ha compreso la richiesta ma non la autorizza. Il messaggio "indice della directory della cartella non consentito" significa che Nginx sta bloccando i tentativi di visualizzare il contenuto di una specifica directory, impedendo l'accesso ai file o la navigazione della struttura delle cartelle.
Soluzioni per risolvere l'errore Nginx 403
Configurazione dell'indicizzazione delle directory
Per abilitare l'indicizzazione delle directory in Nginx, modificare il file di configurazione del server. Aggiungere la direttiva autoindex on; al blocco location. Questo permette a Nginx di mostrare il contenuto di una directory quando non è presente un file index.
Impostare i permessi corretti per la cartella a cui si vuole accedere. Usare il comando chmod per dare i permessi di lettura ed esecuzione all'utente del web server:
chmod 755 /percorso/della/tua/directory
Regolazione dei permessi dei file
Controllare la proprietà di file e directory con il comando ls -l. Se necessario, cambiare la proprietà usando chown:
chown www-data:www-data /percorso/della/tua/directory
Impostare i corretti permessi di lettura ed esecuzione per file e directory. Usare chmod:
chmod 644 /percorso/dei/tuoi/file
chmod 755 /percorso/delle/tue/directory
Aggiornamento delle impostazioni di configurazione di Nginx
Modificare il blocco location nel file di configurazione del server per consentire l'accesso alla directory. Aggiungere o aggiornare queste direttive:
location /tua-directory {
allow all;
}
Aggiungere o aggiornare la direttiva index per specificare quali file Nginx dovrebbe usare come file index:
index index.html index.htm index.php;
Questo indica a Nginx di cercare questi file in ordine quando si accede a una directory.
Verifica della soluzione
Dopo aver risolto l'errore Nginx 403 Forbidden, verificare se la soluzione funziona. Seguire questi passaggi:
- Riavviare il server Nginx per applicare le modifiche. Eseguire questo comando:
sudo systemctl restart nginx
O su alcuni sistemi:
sudo service nginx restart
- Testare l'accesso alla pagina web. Aprire un browser web e provare ad accedere alla directory che mostrava l'errore 403. Se l'operazione ha successo, si dovrebbe vedere il contenuto della directory o il file index, in base alla configurazione.
Se si riscontrano ancora problemi, controllare i file di configurazione per eventuali errori. Si possono anche consultare i log di errore di Nginx per ulteriori informazioni su eventuali problemi.
Approcci alternativi per risolvere l'errore 403 Forbidden
Creazione di un file index
Aggiungere un file index alla directory per risolvere l'errore 403 Forbidden. Creare un file index.html o index.php nella cartella a cui si vuole accedere. Questo file verrà mostrato quando qualcuno tenta di visualizzare il contenuto della directory.
Per far sì che Nginx utilizzi questi file, aggiungere o aggiornare la direttiva index nel blocco server:
index index.html index.htm index.php;
Questo indica a Nginx di cercare questi file quando si accede a una directory.
Utilizzo della direttiva try_files
La direttiva try_files in Nginx aiuta a gestire le richieste quando non vengono trovati file specifici. Aggiungere questa direttiva al blocco location:
location / {
try_files $uri $uri/ /index.html;
}
Questa configurazione indica a Nginx di:
- Cercare l'URI richiesto
- Controllare se esiste una directory con quel nome
- Servire il file index.html se nessuno dei due esiste
È anche possibile reindirizzare le richieste a una pagina predefinita se non vengono trovati file corrispondenti:
location / {
try_files $uri $uri/ /default.html;
}
Questo approccio aiuta a risolvere gli errori 403 fornendo un'opzione di fallback quando la risorsa richiesta non è disponibile.
Risoluzione di errori 403 persistenti
Se si sono provate le soluzioni precedenti e si riscontra ancora un errore 403 Forbidden, provare questi passaggi:
Controllo delle impostazioni SELinux
Sui sistemi che utilizzano SELinux, impostazioni non corrette possono causare errori 403. Per verificare se SELinux è attivo, eseguire:
getenforce
Se mostra "Enforcing", SELinux potrebbe bloccare l'accesso. Per consentire a Nginx di accedere alla directory, utilizzare questo comando:
chcon -Rt httpd_sys_content_t /percorso/della/tua/directory
Per disabilitare temporaneamente SELinux per il test, eseguire:
sudo setenforce 0
Ricordarsi di riabilitarlo dopo il test.
Verifica dei permessi dell'utente Nginx
Controllare con quale utente Nginx è in esecuzione guardando nel file di configurazione di Nginx (spesso /etc/nginx/nginx.conf). Cercare una riga come:
user nginx;
Assicurarsi che questo utente abbia i permessi corretti per accedere alla directory web. È possibile cambiare la proprietà della directory all'utente Nginx:
chown -R nginx:nginx /percorso/della/tua/directory
Se questi passaggi non risolvono il problema, esaminare i log di errore di Nginx per ulteriori dettagli sull'errore 403. I log si trovano solitamente in /var/log/nginx/error.log.





