Problema: Errore di Permesso Negato in Nginx
L'errore "Stat() Failed (13: Permission Denied)" in Nginx si verifica quando il server web non ha i permessi corretti per accedere a file o directory. Questo problema può impedire a Nginx di servire contenuti o eseguire script, causando tempi di inattività del sito web o problemi di funzionamento.
Risoluzione dell'Errore di Permesso Negato
Regolazione della proprietà di file e directory
Per risolvere l'errore di Permesso Negato, regola la proprietà di file e directory. Usa il comando chown per cambiare il proprietario dei file e delle directory all'utente Nginx, solitamente www-data. Ad esempio:
sudo chown www-data:www-data /username/test/static
Per applicare le modifiche di proprietà a tutti i file e sottodirectory, aggiungi l'opzione -R:
sudo chown -R www-data:www-data /username/test/static
Suggerimento: Verifica delle modifiche di proprietà
Dopo aver cambiato la proprietà, usa il comando 'ls -l' per controllare se le modifiche sono state applicate correttamente:
ls -l /username/test/static
Questo mostrerà i permessi del file e della directory, il proprietario e le informazioni sul gruppo.
Modifica dei permessi delle directory
Modifica i permessi della directory usando il comando chmod. Imposta i valori corretti per consentire a Nginx di accedere ai file. Un'impostazione comune dei permessi è 755, che dà permessi di lettura, scrittura ed esecuzione al proprietario, e permessi di lettura ed esecuzione agli altri:
sudo chmod 755 /username/test/static
Imposta l'accesso corretto lungo l'intero percorso della directory. Ogni directory padre dovrebbe avere almeno il permesso di esecuzione per l'utente Nginx:
sudo chmod 755 /username
sudo chmod 755 /username/test
Aggiunta dell'utente Nginx al gruppo richiesto
Se la modifica della proprietà e dei permessi non funziona, aggiungi l'utente Nginx al gruppo necessario. Usa il comando gpasswd per aggiungere l'utente www-data al gruppo che possiede la directory:
sudo gpasswd -a www-data username
Dopo aver aggiunto l'utente Nginx al gruppo, aggiorna i permessi del gruppo per l'accesso alla directory:
sudo chmod g+x /username
sudo chmod g+x /username/test
sudo chmod g+x /username/test/static
Questo dà al gruppo il permesso di esecuzione su ogni directory nel percorso, permettendo a Nginx di accedere ai file.
Test e Verifica della Soluzione
Esecuzione di Nginx come utente appropriato
Per testare se Nginx può accedere ai file con i nuovi permessi, esegui un comando come utente Nginx. Usa sudo per passare all'utente www-data e prova ad accedere ai file:
sudo -u www-data stat /username/test/static/index.html
Se questo comando viene eseguito senza errori, Nginx può ora accedere ai file. Se vedi un errore "Permission denied", rivedi i passaggi precedenti e assicurati che tutti i permessi siano impostati correttamente.
Suggerimento: Controlla la Proprietà del File
Per controllare rapidamente se la proprietà del file è impostata correttamente, usa il comando ls -l:
ls -l /username/test/static/index.html
Questo mostrerà il proprietario e il gruppo del file. Assicurati che corrispondano all'utente Nginx (solitamente www-data).
Ricaricamento della configurazione di Nginx
Dopo aver modificato i permessi o la proprietà, ricarica la configurazione di Nginx per applicare le modifiche:
sudo systemctl reload nginx
Questo comando riavvia il servizio Nginx senza interrompere le connessioni attive.
Per verificare se l'errore è stato risolto, controlla i log di errore di Nginx:
sudo tail -f /var/log/nginx/error.log
Se non vedi più gli errori "Permission denied" nel log, il problema è risolto. Il tuo server Nginx dovrebbe ora servire i file statici dalla directory specificata.





