2010-05-29 12 views
35

Quiero escribir algunas condiciones más complejas en mis archivos de configuración de Nginx, pero no estoy seguro de la sintaxis y no puedo encontrar documentos que describan lo que puede hacer más allá de los conceptos básicos en los ejemplos y parece que no puedo encontrarlo en los foros de Nginx o en la lista de correo.¿Qué idioma son los archivos conf de nginx?

Por ejemplo, es posible que yo tenga una condición unless?

+0

Disculpe mi fuera de tema, pero: en lugar de usar 'a menos', ¿qué hay de malo en negar la condición? – nc3b

+0

Creo que esta es una pregunta relevante para algunos. Creo que su intención era determinar si hay un lexer para los archivos de configuración de nginx. – engineerDave

Respuesta

4

Así que soy un novato en nginx, y tenía la misma pregunta. Resulta que la sintaxis del lenguaje como se mencionó anteriormente es tanto personalizada como bastante simple. La sintaxis es captured in a section en la documentación NGINX, y se repite aquí por conveniencia:

nginx se compone de módulos que son controlados por las directivas especificados en el archivo de configuración. Las directivas se dividen en directivas simples y directivas de bloque. Una directiva simple consiste en el nombre y los parámetros separados por espacios y termina con un punto y coma (;). Una directiva de bloque tiene la misma estructura que una directiva simple, pero en lugar del punto y coma termina con un conjunto de instrucciones adicionales rodeadas de llaves ({y}). Si una directiva de bloqueo puede tener otras directivas dentro de llaves, se llama contexto (ejemplos: eventos , http, servidor y ubicación).

Las directivas colocadas en el archivo de configuración fuera de cualquier contexto se consideran en el contexto principal. Los eventos y las directivas http residen en el contexto principal, el servidor en http y la ubicación en el servidor .

El resto de una línea después del signo # se considera un comentario.

En resumen: Todo en un archivo de configuración de Nginx es una directivaque puede hacer referencia a una variable . Todas las directivas son listed alphabetically here, y todas las variables son listed alphabetically here. La configuración de NGINX está impulsada por los módulos que implementan cada una una determinada funcionalidad, y cada módulo aporta directivas y variables que están disponibles para su uso dentro de la configuración. Eso es.

Por eso, incluso if - que se parece a una palabra clave como en un lenguaje de programación tradicional - es en realidad sólo una directiva aportado por el ngx_http_rewrite_modulemodule.

Espero que esto ayude!

PS - También puedes ver https://devdocs.io/ y, en concreto https://devdocs.io/nginx, para una gran parte forma mejorada para buscar/utilizar la documentación Nginx.

+0

Indique mediante un comentario si algo en mi respuesta es incorrecto/confuso para que pueda corregirlo: mi conocimiento de nginx tiene todos los datos de un día a partir de esta redacción (pero, ¿qué mejor momento para capturar esa respuesta?) – scorpiodawg

7

archivos de configuración de Nginx están escritos en un lenguaje (si quieres llamarlo uno) que fue diseñado e implementado para los archivos de configuración de Nginx. Lo más probable es que la documentación sea la única referencia disponible más allá de la fuente misma. Comenzaría publicando un mensaje en uno de los Nginx forums o uniéndome al Nginx mailing list y preguntando allí. Por supuesto, también puedes tomar la fuente y comenzar allí.

Buena suerte.

20

Los archivos conf de Nginx se escriben en su propio idioma o sintaxis. He incluido algunos de los conceptos básicos a continuación. Estos son mis propias notas personales tomadas de Mastering Nginx

Formato básico

el archivo de base se divide en secciones

: 

<section> { 

    <directive> <parameters>; 

} 

de parámetros globales

no definen en formato estándar descrito anteriormente , no tiene {} una sección global al sur. Se coloca en la parte superior del archivo de configuración

params globales importantes

usuario - usuario y grupo el cual el trabajador se ejecutan los procesos. Si omite grupo sea igual a ese usuario a utilizar

worker_processes - número de procesos de trabajo comenzó. Manejan conexiones de clientes. como una regla para cargas vinculados a la CPU este debe ser igual número de procesadores y para i cargas/O encuadernados veces Este por 1,5 o 2

error_log - ubicaciones de error_logs. un sobrescribir en directivas. Un segundo parámetro indica el nivel de depuración de registro (solo disponible cuando se configura la modificación de depuración en la compilación), información, aviso, advertencia, error, crítica, alerta y emergencia.

pid - el archivo en el que el identificador de proceso del proceso principal está escrito, sobrescribiendo la compilados por defecto.

worker_connections - configura el número máximo de conexiones simultáneas que un proceso de trabajo puede tener abiertos. Especialmente importante en servidores proxy inversos: es posible que se requiera un ajuste adicional en el nivel del sistema operativo para alcanzar este número de conexiones simultáneas.

Usando incluir archivos se puede utilizar en cualquier lugar de su archivo de configuración

incluyen /opt/local/etc/nginx/mime.types;

Puede aparecer un comodín en la ruta para hacer coincidir varios archivos: include/opt/local/etc/nginx/vhost/*.conf;

Un archivo de configuración se puede probar fácilmente llamando NGINX como sigue: nginx -t -c

La sección Http será la sección más comúnmente utilizado.

Cuestiones relacionadas