Come risolvere l'errore 'Nginx 403: directory index of folder is forbidden'

Pubblicato 27 agosto 2024

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:

  1. Riavviare il server Nginx per applicare le modifiche. Eseguire questo comando:
sudo systemctl restart nginx

O su alcuni sistemi:

sudo service nginx restart
  1. 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:

  1. Cercare l'URI richiesto
  2. Controllare se esiste una directory con quel nome
  3. 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.