Cosa sta succedendo?
Devi usare Debian o Ubuntu, poiché il male sites-available
/ la sites-enabled
logica 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 include
direttiva standard in /etc/nginx/nginx.conf
.
Ecco uno snippet di /etc/nginx/nginx.conf
da un pacchetto ufficiale upstream di nginx da nginx.org:
http {
…
include /etc/nginx/conf.d/*.conf;
}
Ecco un frammento di /etc/nginx/nginx.conf
Debian / 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.d
devono essere elaborati prima e, come tale, se si hanno configurazioni che sono silenziosamente in conflitto tra loro, allora quelle di conf.d
possono 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 .conf
suffisso, 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-available
e sites-enabled
a tutti i costi.
Non vedo assolutamente alcun motivo per usare sites-available
/ sites-enabled
:
Alcune persone hanno menzionato nginx_ensite
e nginx_dissite
script - 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 nginx
pacchetto 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-available
a 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 include
direttiva 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-enabled
e emacs
crei un file di backup come default~
, quindi, all'improvviso, hai entrambi default
e 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-enabled
sia 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.