Todos sabemos cómo habilitar un sitio web usando apache en linux. Estoy bastante seguro de que todos estamos de acuerdo en usar el comando a2ensite.
Desafortunadamente, no hay un comando equivalente predeterminado que viene con Nginx, pero sucedió que instalé algún paquete en ubuntu que me permitió habilitar / deshabilitar sitios y enumerarlos.
El problema es que no recuerdo el nombre de este paquete.
Alguien sabe de lo que estoy hablando?
Dime el nombre de este paquete y el nombre del comando.
nginx
command-line-interface
website
command
Ghassen Telmoudi
fuente
fuente
Respuestas:
Si ha instalado el
nginx
paquete desde los repositorios de Ubuntu, tendrá dos directorios./etc/nginx/sites-enabled
y/etc/nginx/sites-available
.En la configuración principal de nginx
/etc/nginx/nginx.conf
, tiene la siguiente línea:Básicamente, para enumerar todos los hosts virtuales disponibles, puede ejecutar el siguiente comando:
Para activar uno de ellos, ejecute el siguiente comando:
Los scripts que vienen con Apache son básicamente simples envoltorios de shell que hacen algo similar a lo anterior.
Después de vincular los archivos, recuerde ejecutar
sudo service nginx reload
/service nginx reload
fuente
Simplemente cree este script
/usr/bin/nginx_modsite
y hágalo ejecutable.Cómo funciona:
Para enumerar todos los sitios
Para habilitar el sitio "test_website"
Para deshabilitar el sitio "test_website"
fuente
¿Te refieres a
nginx_ensite
ynginx_dissite
?fuente
NGINX
Si está utilizando uno de los paquetes oficiales de nginx de http://nginx.org/packages/ , la mejor manera es navegar al
/etc/nginx/conf.d
directorio y cambiar el nombre del archivo afectado de tener un.conf
sufijo a tener uno diferente para deshabilitar el sitio:sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
O lo contrario para habilitarlo:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
Esto se debe a que el valor predeterminado
/etc/nginx/nginx.conf
tiene la siguienteinclude
directiva:Debian / Ubuntu
Sin embargo, si está utilizando un derivado de Debian / Ubuntu, entonces, además de
conf.d
, también puede tener el mal no estándarsites-available
ysites-enabled
directorios, algunos archivos bajo los cuales pueden incluirse descuidadamente sin importar su extensión:Como tal, en Debian / Ubuntu, es posible que primero tenga que averiguar dónde se encuentra la configuración del sitio.
Puede usar el siguiente comando para obtener una lista de todos los sitios disponibles ejecutando
find(1)
para encontrar todos los archivos normales que coinciden con la máscara dada:find /etc/nginx -maxdepth 2 -type f \( -path "*/conf.d/*.conf" -or -path "*/sites-*/*" \)
Puede usar el siguiente comando para obtener una lista de todos los sitios habilitados :
find /etc/nginx -maxdepth 2 \( -path "*/conf.d/*.conf" -or -path "*/sites-enabled/*" \)
Luego, para deshabilitar / habilitar sitios en Debian / Ubuntu:
Para deshabilitar un sitio: si la configuración está activa
conf.d
, simplemente cambie el nombre del archivo para que ya no tenga un.conf
sufijo; o si está adentrosites-enabled
, muévalo fuerasites-enabled
.Para habilitar un sitio, la mejor manera sería moverlo
/etc/nginx/conf.d
y cambiarle el nombre para tener un.conf
sufijo.PD: ¿Por qué creo que Debian
include /etc/nginx/sites-enabled/*;
es malo? Intente editar un par de archivos en ese directorio y haga queemacs
cree los archivos de respaldo (con el~
sufijo), luego pregúnteme nuevamente.fuente
conf.d
directorio es la configuración de todo el servidor para módulos, complementos, controladores fastcgi, etc. y explícitamente no almacenar host / configuraciones de vhost en y 2) Uno no debe editar ningún archivo ensites-enabled
serverfault.com/a/825297/86189conf.d
, ya que está incluido en el mismo contexto que el contexto desites-enabled
unhttp
nivel, por lo tanto, las directivas de módulos y complementos pueden no aplicarse. Del mismo modo, su suposición de que uno no debería editar archivossites-enabled
es simplemente una ilusión: no hay tales instrucciones dentro de la distribución o dentro del directorio, por lo tanto, es puramente su suposición, que de ninguna manera se aplica por la distribución, por lo tanto, usted tiene todo tipo de problemas que surgen de él, por ejemplo, stackoverflow.com/q/45852224/1122270 .conf.d
ya que es, probablemente, el mantenedor de Debian de Nginx (o tal vez se mantiene por compatibilidad con upstream). Acerca de no editar archivossites-enabled
, no es una ilusión, sino el supuesto flujo de trabajo bajo Apache que intentaron emular en Nginx. En Apache es bastante obvio debido a la existencia dea2ensite
ya2dissite
guiones. Desafortunadamente, nada de eso se proporciona para Nginx, lo que muestra cuán baja es la calidad de mantenimiento de ese paquete en Debian. Ambos carecen de documentación, cierto.ls -al sites-enabled
en Apache o Nginx muestra que los archivos existentes en el directorio son enlaces simbólicos-available
, lo mismo para los módulos en Apache, junto cona2enmod
/a2dismod
scirpts proporcionados .conf.d
el estado actual.Otro método es simplemente cambiar el nombre del archivo de configuración del sitio a algo que termine sin .conf
P.ej
sudo mv mysite.conf mysite.conf.disabled
Luego vuelva a cargar nginx, y ese vhost volverá al valor predeterminado.
fuente
include /etc/nginx/sites-enabled/*;
que solo incluye conf dir como*.conf
sites-available
ysites-enabled
su mérito y uso. Alguien probablemente debería simplemente presentar un informe de error para la verdadera línea ofensiva en nginx conf/etc/nginx/sites-enabled/*.conf;
y probablemente lo hará, ya que probablemente sea un descuido. Pero si respetas el flujo de trabajo de Debian, estarás editando archivos desites-available
todos modos y simulando los que deseas habilitarsites-enabled
.