¿Nginx incluye archivos de configuración que no están en orden?


12

¿Es fijo o aleatorio el orden en que Nginx incluye los archivos de configuración? Apache declara explícitamente que los caracteres comodín se expanden en orden alfabético. Con Nginx parece que esto no se aplica, y el manual no dice nada al respecto .

En mi configuración, 20_example.comse incluyó antes 00_default, lo que frustra mi propósito de definir directivas compartidas (como formatos de registro) allí.

Respuestas:



3

La respuesta de AD7six no es del todo correcta. El orden también es importante cuando dos bloques de servidores tienen la misma "especificidad", por ejemplo, cuando ambos usan expresiones regulares en server_name, y la solicitud entrante coincide con ambos:

server {
    server_name ~^(www\.)?(?<domain>foo\.com|bar\.com|baz\.com)$;
    ...
}

y

server {
    server_name ~^(www\.)?(?<domain>.+)$;
    ...
}

En este escenario, los dos bloques de servidor no se pueden distribuir en dos archivos porque su orden no podría garantizarse.


1

Como OP señala el orden log_format es realmente muy importante, en el caso de log_formats personalizados, si coloca en el mismo directorio ambos tipos de archivos, algunos archivos con log_formats, algunos archivos con bloques de servidores que hacen uso de esos log_formats, el resultado será un Configuración altamente irrepetible.

En el trabajo, cuando movimos nuestra granja nginx hecha a mano a la marioneta, comenzamos a ver algunas instalaciones nginx desde cero para fallar en un hardware / configuración idéntico, después de muchas situaciones extrañas de depuración como tener dos / etc / nginx / * (- r) con un md5match y el mismo binario produciendo resultados diferentes (error de formato de registro inválido en uno y trabajando en otro), aprendimos de la manera difícil que orden es realmente muy importante para algunas directivas como log_format.

Solucionamos el problema simplemente moviendo la generación de bloques de servidor fuera de conf.d / * a otra carpeta incluida después de conf.d / *.

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.