Cosa sta succedendo?
Devi usare Debian o Ubuntu, poiché il male sites-available / la sites-enabledlogica non è usato dal pacchetto upstream di nginx da http://nginx.org/packages/ .
In entrambi i casi, entrambi sono implementati come convenzione di configurazione con l'aiuto della includedirettiva standard in /etc/nginx/nginx.conf.
Ecco uno snippet di /etc/nginx/nginx.confda un pacchetto ufficiale upstream di nginx da nginx.org:
http {
…
include /etc/nginx/conf.d/*.conf;
}
Ecco un frammento di /etc/nginx/nginx.confDebian / Ubuntu :
http {
…
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Quindi, dal punto di vista di NGINX, l'unica differenza sarebbe che i file conf.ddevono essere elaborati prima e, come tale, se si hanno configurazioni che sono silenziosamente in conflitto tra loro, allora quelle di conf.dpossono avere la precedenza su quelle in sites-enabled.
La migliore pratica è conf.d.
Dovresti usare /etc/nginx/conf.d, in quanto è una convenzione standard, e dovrebbe funzionare ovunque.
Se è necessario disabilitare un sito, è sufficiente rinominare il nome file per non avere più un .confsuffisso, molto semplice, diretto ed a prova di errore:
sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
O il contrario per abilitare un sito:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Evitare sites-availablee sites-enableda tutti i costi.
Non vedo assolutamente alcun motivo per usare sites-available/ sites-enabled:
Alcune persone hanno menzionato nginx_ensitee nginx_dissitescript - i nomi di questi script sono persino peggiori del resto di questa debacle - ma questi script non si trovano da nessuna parte - sono assenti dal nginxpacchetto anche in Debian (e probabilmente anche in Ubuntu) e non presenti in un pacchetto tutto loro, inoltre, hai davvero bisogno di un intero script di terze parti non standard per spostare e / o collegare semplicemente i file tra le due directory ?!
E se non stai usando gli script (che è, in effetti, una scelta intelligente come sopra), allora arriva il problema di come gestisci i siti:
- Crei collegamenti simbolici da
sites-availablea sites-enabled?
- Copia i file?
- Sposta i file?
- Modificare i file in atto in
sites-enabled?
Quanto sopra può sembrare un problema minore da affrontare, fino a quando diverse persone iniziano a gestire il sistema o fino a quando non si prende una decisione rapida, solo per dimenticarsene mesi o anni lungo la linea ...
Il che ci porta a:
È sicuro rimuovere un file da sites-enabled? È un soft link? Un collegamento reale? O l'unica copia della configurazione? Un ottimo esempio di inferno di configurazione.
Quali siti sono stati disabilitati? (Con conf.d, basta fare una ricerca di inversione per i file che non terminano con .conf- find /etc/nginx/conf.d -not -name "*.conf"o utilizzare grep -v.)
Non solo tutto quanto sopra, ma nota anche la includedirettiva specifica usata da Debian / Ubuntu - /etc/nginx/sites-enabled/*- nessun suffisso di nome file è specificato per sites-enabled, a differenza di conf.d.
- Ciò significa che se un giorno decidi di modificare rapidamente un file o due all'interno
/etc/nginx/sites-enablede emacscrei un file di backup come default~, quindi, all'improvviso, hai entrambi defaulte default~incluso come configurazione attiva, che, a seconda delle direttive utilizzate, potrebbe anche non dare eventuali avvisi e causare una sessione di debug prolungata. (Sì, è successo a me; è stato durante un hackathon, ed ero totalmente perplesso sul perché la mia conf non funzionava.)
Quindi, sono convinto che sites-enabledsia puro male!
www-dataè un argomento separato. La maggior parte dei sistemi operativi definisce un utente separato con autorizzazioni inferiori che il processo può eseguire dopo l'associazione alla porta 80 come root. È definito nel file di configurazione. Applicare pratiche di sicurezza di base da lì; non lasciare che l'utente scriva su qualcosa su cui il server web non dovrebbe aver bisogno di scrivere, non lasciare che altri utenti scrivano sui file a meno che non sia intenzionale.