Nginx, yapılandırma dosyalarını sırayla içermiyor mu?


12

Nginx'in yapılandırma dosyalarını içerme sırası sabit mi yoksa rastgele mi? Apache, joker karakterlerin alfabetik sırayla genişletildiğini açıkça belirtir . Nginx ile bu geçerli değil gibi görünüyor ve kılavuz bu konuda hiçbir şey söylemiyor .

Kurulumumda, 20_example.comdaha önce dahil edilmişti 00_default, bu da paylaşılan direktifleri (günlük formatları gibi) tanımlama amacımı yeniyor.

Yanıtlar:



3

AD7six'in yanıtı tamamen doğru değil. İki sunucu bloğu da aynı "özgüllük" e sahip olduğunda, örneğin her ikisi de sunucu_adı'nda normal ifadeler kullandığında ve gelen istek her ikisiyle eşleştiğinde de sipariş önemlidir:

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

ve

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

Bu senaryoda, iki sunucu bloğu iki dosyaya yayılamaz çünkü siparişleri garanti edilemez.


1

OP log_format sırasına dikkat çektiğinden, özel log_formats durumunda, her iki tip dosyasını aynı dizine yerleştirirseniz, log_formats içeren bazı dosyalar, bu log_format'ları kullanan sunucu bloklarına sahip bazı dosyalar, sonuç bir tekrarlanamayan yapılandırma.

El yapımı nginx çiftliğini kuklaya ilk taşıdığımız işte, iki n / x / nginx / * ( r) bir md5match ve farklı sonuçlar üreten bir ikili dosya ile (birinde geçersiz log_format hatası ve diğerinde çalışma), log_format gibi bazı direktifler için gerçekten çok önemli olduğunu kesin olarak öğrendik.

Biz sadece conf.d / * 'dan sunucu blokları oluşturma conf.d / * sonra dahil başka bir klasöre taşıyarak sorunu çözdü.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.