nginx falta sitios disponibles directorio

190

Instalé Nginx en Centos 6 y estoy tratando de configurar hosts virtuales. El problema que tengo es que parece que no puedo encontrar el /etc/nginx/sites-availabledirectorio.

¿Hay algo que deba hacer para crearlo? Sé que Nginx está en funcionamiento porque puedo buscarlo.

Fr0ntSight
fuente
Si desea dividir un archivo de configuración grande en archivos más pequeños, puede usar mi script para dividirlo: stackoverflow.com/a/38635284/1069083
rubo77

Respuestas:

354

Bueno, creo que nginx por sí solo no tiene eso en su configuración, porque el paquete mantenido por Ubuntu lo hace como una convención para imitar la configuración apache de Debian. Puede crearlo usted mismo si desea emular la misma configuración.

Crea /etc/nginx/sites-availabley /etc/nginx/sites-enabledluego edita el httpbloque dentro /etc/nginx/nginx.confy agrega esta línea

include /etc/nginx/sites-enabled/*;

Por supuesto, todos los archivos estarán dentro sites-available, y crearía un enlace simbólico para ellos dentro sites-enabledde los que desea habilitar.

Mohammad AbuShady
fuente
23
Los familiares de RedHat (es decir, Fedora y Centos) no tienen esta característica lista para usar como Debian / Ubuntu. Es fácil de copiar, como dijo @Mohammad, sin embargo, no tener buenos valores predeterminados es confuso para los recién llegados.
MGP
36
Dios, no puedo decir cuántas búsquedas hice para resolver esto. Estoy usando Amazon Linux AMI versión 2014.03. Estos directorios no se crean automáticamente si instala nginx desde los archivos rpm (ya sea nginx 1.6.2 o nginx 1.7.5) pero muchos ejemplos de configuración de nginx hacen referencia a estos ... lo que hace que se pregunte si su nginx se instaló correctamente o no.
so_mv
1
Genial gracias, ¿qué tal el enlace simbólico? ¿Es correcta mi sintaxis? Parece que la declaración de inclusión no lo encuentra.
ceros y unos
77
Lo arreglé, comencé de nuevo y creé un enlace sym como este: sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.confno estoy seguro de por qué la ruta completa hizo la diferencia: /
ceros y unos
1
Muchas gracias. Construí nginx desde la fuente y no me di cuenta de que Ubuntu hizo esto.
Sean Norwood
66

Si prefiere un enfoque más directo, uno que NO interfiera con el enlace simbólico entre /etc/nginx/sites-availabley /etc/nginx/sites-enabled, haga lo siguiente:

  1. Localice su archivo nginx.conf. Probable en/etc/nginx/nginx.conf
  2. Encuentra el bloque http.
  3. En algún lugar del bloque http, escriba include /etc/nginx/conf.d/*.conf;Esto le dice a nginx que extraiga cualquier archivo en el conf.ddirectorio que termine .conf. (Lo sé: es extraño que un directorio pueda tener un contenido .).
  4. Cree el conf.ddirectorio si aún no existe (según la ruta en el paso 3). Asegúrese de otorgarle los permisos / propiedad correctos. Probable root o www-data.
  5. Mueva o copie sus archivos de configuración separados (tal como lo ha hecho /etc/nginx/sites-available) en el directorio conf.d.
  6. Vuelva a cargar o reinicie nginx.
  7. Come un cono de helado.

Cualquier .confarchivo que coloque en el conf.ddirectorio de aquí en adelante se activará siempre que vuelva a cargar / reiniciar nginx después.

Nota: Puede usar el método conf.dy sites-enabled+ sites-availablesimultáneamente si lo desea. Me gusta probar en mi caja de desarrollo usando conf.d. Se siente más rápido que simblinking y unsymlinking.

pie de codo
fuente
13
El punto del "desastre" simbólico es que puede preservar los archivos de configuración y aún deshabilitar los hosts virtuales con mucha facilidad. Si usa su enfoque, debe mover los archivos fuera de conf.d cuando desee deshabilitar un sitio que no creo que sea menos desordenado que eliminar convenientemente un enlace simbólico.
bviktor
@bviktor te escucho. De hecho, uso ambas formas. Me pareció más tedioso [al probar configuraciones] rebotar de un lado a otro entre los directorios disponibles y habilitados para sitios. En mi entorno de producción, estoy planeando usar symlinking.
elbowlobstercowstand
1
Sí, estoy de acuerdo, escribir ln -s ../sites-available/...es bastante tedioso cuando se prueban cosas rápidamente, pero a la larga es útil y más fácil de administrar :)
bviktor
@bviktor Estoy muy agradecido por la capacidad de poder presionar la pestaña en la terminal al escribir un nombre de ruta y ver que la función de autocompletar lo hace todo. No lo supe por un tiempo hasta que vi un video con alguien que lo usaba. ¡Pensé que escribían a 300 palabras por minuto! Entonces me di cuenta. :)
elbowlobstercowstand
12
@bvktor Solo se incluyen sitios con extensión .conf. Si no desea que se habilite un sitio, simplemente agregue la extensión .disabled al archivo de configuración del sitio. Esa es la convención estándar en CentOS / Apache y se aplicará también a Nginx.
SenG
0

Intenté sudo apt install nginx-full. Obtendrá todos los paquetes requeridos.

Amit Shrestha
fuente