¿Cómo configuro un host predeterminado para nginx?


11

Estoy tratando de descubrir cómo configurar un host predeterminado para mi instalación de nginx. Encontré este artículo en la Wiki de nginx:

http://wiki.nginx.org/NginxVirtualHostExample#A_Default_Catchall_Virtual_Host

Lamentablemente, esto no funciona. Después de reiniciar me sale esto:

Restarting nginx: nginx: [emerg] unknown directive "http" in /etc/nginx/sites-enabled/catchall:1
nginx: configuration file /etc/nginx/nginx.conf test failed

Después de eliminar la directiva http me sale esto:

Restarting nginx: nginx: [emerg] unknown log format "main" in /etc/nginx/sites-enabled/catchall:7
nginx: configuration file /etc/nginx/nginx.conf test failed

Estoy en Ubuntu 10.04.3 donde estoy usando el nginx PPA oficial. La versión 1.0.9 de nginx se está ejecutando.

Respuestas:


16

Las configuraciones de Nginx se basan en una serie de bloques anidados. Solo debe haber un bloque http. Esto generalmente se define en /etc/nginx/nginx.conf: todos los archivos incluidos (por ejemplo, de sitios disponibles) se incluyen en este bloque http. Para configurar un host predeterminado / general, solo necesita la sección de bloqueo del servidor para su host predeterminado. Esto se logra agregando 'default' a la directiva de escucha. Además, es común usar un nombre_servidor que no coincidirá con ningún nombre real, generalmente un guión bajo ("_"), pero también se aceptan otros caracteres. Si omite el parámetro predeterminado, el primer bloque de servidor se trata como el predeterminado. (Consulte la guía de nginx sobre server_names para obtener más información)

La configuración predeterminada ('original' en este contexto) de nginx puede incluir un bloque de servidor predeterminado (general) en nginx.conf que puede configurar.

En cuanto al segundo error, asegúrese de que 'main' esté definido en nginx.conf (una línea debe comenzar con 'log_format main ...' (y, por supuesto, verifique los corchetes). Puede omitir la línea 'access_log' por completo si no desea que se registren las solicitudes a su servidor predeterminado (o puede cambiar el formato definiendo un nuevo formato).


Eso fue rápido. Gracias. Voy a probar esto mañana después de dormir un poco ;-).
Ulf Klose

El uso de _ como nombre_servidor no se agrega a la "omisión" del servidor {}, solo se usa comúnmente para evitar que el catchall entre en conflicto con otros bloques del servidor, por lo que no hay "anulación" sobre el indicador predeterminado en la directiva de escucha. Es lo único que marca explícitamente el servidor como predeterminado. Aún así, +1
kolbyjack

@kolbyjack - Gracias por la corrección - Lo arreglaré en mi respuesta.
cyberx86

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.