Nginx include file di configurazione non in ordine?


12

L'ordine in cui Nginx include i file di configurazione è fisso o casuale? Apache afferma esplicitamente che i caratteri jolly sono espansi in ordine alfabetico. Con Nginx sembra che ciò non si applichi e il manuale non dice nulla al riguardo .

Nella mia configurazione, è 20_example.comstato incluso in precedenza 00_default, il che vanifica il mio scopo di definire direttive condivise (come i formati di registro) lì.

Risposte:



3

La risposta di AD7six non è del tutto corretta. L'ordine è importante anche quando due blocchi server hanno la stessa "specificità", ad esempio quando entrambi usano regex in nome_server e la richiesta in entrata corrisponde a entrambi:

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

e

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

In questo scenario, i due blocchi server non possono essere suddivisi su due file perché il loro ordine non può quindi essere garantito.


1

Come OP sottolinea l'ordine log_format è davvero molto importante, nel caso di log_format personalizzati, se si posizionano nella stessa directory entrambi i tipi di file, alcuni file con log_format, alcuni file con blocchi server che fanno uso di quei log_format, il risultato sarà un configurazione altamente irripetibile.

Al lavoro quando abbiamo spostato per la prima volta la nostra fattoria nginx fatta a mano in fantoccio, abbiamo iniziato a vedere alcune installazioni di nginx da zero per fallire in un identico hardware / configurazione, dopo un sacco di debug di situazioni bizzarre come avere due / etc / nginx / * (- r) con un md5match e lo stesso binario che producono risultati diversi (errore log_format non valido su uno e lavoro su un altro), abbiamo imparato a fondo che l' ordine è davvero molto importante per alcune direttive come log_format.

Abbiamo risolto il problema spostando la generazione di blocchi server da conf.d / * in un'altra cartella inclusa dopo conf.d / *.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.