¿Que esta pasando?
Debe estar utilizando Debian o Ubuntu, ya que el mal sites-available
/ sites-enabled
lógica no es utilizado por el paquete ascendente de nginx de http://nginx.org/packages/ .
En cualquier caso, ambos se implementan como una convención de configuración con la ayuda de la include
directiva estándar en /etc/nginx/nginx.conf
.
Aquí hay un fragmento de /etc/nginx/nginx.conf
un paquete oficial de nginx de nginx.org:
http {
…
include /etc/nginx/conf.d/*.conf;
}
Aquí hay un fragmento de /etc/nginx/nginx.conf
Debian / Ubuntu :
http {
…
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Por lo tanto, desde el punto de vista de NGINX, la única diferencia sería que los archivos conf.d
se procesarán antes y, por lo tanto, si tiene configuraciones que entran en conflicto silenciosamente entre sí, entonces las de conf.d
pueden tener prioridad sobre las que se encuentran sites-enabled
.
La mejor práctica es conf.d
.
Debería usarlo /etc/nginx/conf.d
, ya que es una convención estándar, y debería funcionar en cualquier lugar.
Si necesita deshabilitar un sitio, simplemente cambie el nombre del nombre del archivo para que ya no tenga un .conf
sufijo, es muy fácil, directo y a prueba de errores:
sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
O lo contrario para habilitar un sitio:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Evitar sites-available
y sites-enabled
a toda costa.
No veo absolutamente ninguna razón para usar sites-available
/ sites-enabled
:
Algunas personas han mencionado nginx_ensite
y nginx_dissite
scripts, los nombres de estos scripts son incluso peores que el resto de esta debacle, pero estos scripts tampoco se encuentran en ninguna parte, están ausentes del nginx
paquete incluso en Debian (y probablemente también en Ubuntu) , y no presente en un paquete propio, además, ¿realmente necesita un script de terceros no estándar completo para simplemente mover y / o vincular los archivos entre los dos directorios?
Y si no está utilizando los scripts (que, de hecho, es una opción inteligente según lo anterior), entonces surge el problema de cómo administra los sitios:
- ¿Creas enlaces simbólicos de
sites-available
a sites-enabled
?
- Copiar los archivos?
- Mover los archivos?
- Editar los archivos en su lugar en
sites-enabled
?
Lo anterior puede parecer algunos problemas menores que abordar, hasta que varias personas comiencen a administrar el sistema, o hasta que tome una decisión rápida, solo para olvidarse de eso meses o años más adelante ...
Lo que nos lleva a:
¿Es seguro eliminar un archivo sites-enabled
? ¿Es un enlace suave? Un enlace duro? ¿O la única copia de la configuración? Un excelente ejemplo de infierno de configuración.
¿Qué sitios han sido deshabilitados? (Con conf.d
, simplemente haga una búsqueda de inversión de archivos que no terminen con .conf
- find /etc/nginx/conf.d -not -name "*.conf"
, o use grep -v
).
No solo todo lo anterior, sino que también tenga en cuenta la include
directiva específica utilizada por Debian / Ubuntu /etc/nginx/sites-enabled/*
: no se especifica ningún sufijo de nombre de archivo sites-enabled
, a diferencia de conf.d
.
- Lo que esto significa es que si un día decides editar rápidamente uno o dos archivos
/etc/nginx/sites-enabled
y emacs
creas un archivo de respaldo como default~
, de repente, tienes ambos default
e default~
incluidos como configuración activa, lo que, dependiendo de las directivas utilizadas, puede que ni siquiera te dé le avisa y provoca una sesión de depuración prolongada. (Sí, me pasó a mí; fue durante un hackathon, y estaba totalmente desconcertado de por qué mi conf no estaba funcionando).
Por lo tanto, estoy convencido de que sites-enabled
es puro mal!
www-data
Es un tema aparte. La mayoría de los sistemas operativos definen un usuario separado con permisos más bajos que el proceso puede ejecutar después de vincularse al puerto 80 como root. Está definido en el archivo de configuración. Aplicar prácticas básicas de seguridad desde allí; no permita que el usuario escriba en nada en lo que el servidor web no deba escribir, no permita que otros usuarios escriban en los archivos a menos que sea deliberado.