Problema: Errore Nginx '(13: Permission denied)'
Quando si utilizza Nginx come server web o proxy inverso, potrebbe apparire il messaggio di errore "(13: Permission denied) while connecting to upstream". Questo errore si verifica spesso quando Nginx non ha i permessi necessari per accedere o comunicare con il server upstream. Può compromettere il funzionamento del sito web e impedire la consegna dei contenuti agli utenti.
6 Soluzioni per risolvere il problema di permessi negati di Nginx
1. Controllare i permessi dell'utente Nginx
Per risolvere l'errore di permessi negati di Nginx, verifica i permessi dell'utente Nginx. Controlla il file nginx.conf per vedere le impostazioni di utente e gruppo. Assicurati che l'utente Nginx possa accedere ai file e alle directory. Potrebbe essere necessario modificare i permessi di file e directory con il comando chmod.
2. Esaminare le impostazioni SELinux
SELinux può bloccare l'accesso di Nginx ai file o impedire le connessioni di rete. Controlla lo stato di SELinux e modifica i valori booleani se necessario. Usa il comando 'setsebool' per cambiare queste impostazioni. Puoi attivare il valore booleano SELinux per la connessione di rete httpd con:
setsebool httpd_can_network_connect on -p
3. Rivedere i file di configurazione di Nginx
Controlla il file nginx.conf per eventuali errori. Esamina le impostazioni del server upstream. Assicurati che tutti i percorsi e gli indirizzi del server siano corretti e che Nginx possa accedere a queste risorse.
4. Analizzare i log di errore di Nginx
I log di errore di Nginx possono aiutarti a individuare il problema di permessi negati. Esamina i log di errore, solitamente in /var/log/nginx/error.log, cercando messaggi di permessi negati. Usa il comando grep per trovare questi errori:
grep denied /var/log/nginx/error.log
5. Verificare le regole del firewall
Il firewall potrebbe bloccare le connessioni di Nginx. Controlla le regole del firewall e assicurati che consentano a Nginx di connettersi alle porte e agli indirizzi IP necessari. Potrebbe essere necessario aggiungere nuove regole o modificare quelle esistenti per garantire a Nginx l'accesso corretto.
6. Verificare la disponibilità del server upstream
Controlla che i tuoi server upstream siano in esecuzione e raggiungibili. Prova a connetterti a questi server dal tuo server Nginx per escludere problemi di rete o configurazione. Puoi usare telnet o curl per testare queste connessioni e assicurarti che i server upstream rispondano.
Se continui ad avere problemi, potresti vedere un errore 502 Bad Gateway quando ti connetti all'upstream. In questo caso, controlla il tuo application server e assicurati che sia in esecuzione e configurato correttamente.
Ricorda, se modifichi le impostazioni SELinux, potrebbe essere necessario eseguire:
audit2allow -m mynginx
sudo semodule -i mynginx.pp
Questo crea e installa un modulo di policy personalizzato basato sui log di audit.
Ulteriori passaggi per la risoluzione dei problemi di permessi negati di Nginx
Usare audit2allow per generare policy SELinux
Lo strumento audit2allow aiuta a creare policy SELinux quando le policy standard non funzionano. Per usarlo:
-
Controlla i log SELinux per le azioni negate:
grep "denied" /var/log/audit/audit.log -
Usa audit2allow per generare una policy:
audit2allow -m mynginx sudo semodule -
Applica la nuova policy:
mynginx sudo semodule -i mynginx.pp
Questo processo crea e installa un modulo SELinux basato sulle recenti azioni negate.
Regolare la proprietà e i permessi dei file
Correggere la proprietà e i permessi dei file aiuta a risolvere i problemi di permessi di Nginx:
-
Imposta la proprietà dei file e delle directory di Nginx:
chown -R nginx:nginx /var/www/html -
Imposta i permessi:
chmod 755 /var/www/html chmod 644 /var/www/html/*
Questi comandi assegnano all'utente e al gruppo Nginx la proprietà dei file web e impostano i permessi di lettura, scrittura ed esecuzione. Modifica i percorsi in base alla tua configurazione.





