nginx bölünmüş büyük yapılandırma dosyası


17

Nginx varsayılan yapılandırma dosyam çok büyüyor. Her birini her dosyaya en fazla 4 konum içeren daha küçük yapılandırma dosyalarına bölmek istiyorum, böylece onları hızlı bir şekilde etkinleştirebilir / devre dışı bırakabilirim.

Gerçek dosya şöyle görünür:

server {
    listen 80 default_server;
    root /var/www/

    location /1 {
        config info...;
    }

    location /2 {
        config info....;
    }        
    location /abc {
        proxy_pass...;
    }

    location /xyz {
        fastcgi_pass....;
    }
    location /5678ab {
        config info...;
    }

    location /admin {
        config info....;
    }

şimdi, bunu her dosyada sadece birkaç konuma sahip olacak şekilde bölmek istersem (birbirine ait konumlar), kaosa neden olmadan bunu yapmanın uygun bir yolu ne olur (her dosyada kök bildirmek gibi, bu yüzden garip yol bu nginx'e sahip olmak) dosyaları bulmaya çalışır)?

Yanıtlar:


24

Muhtemelen Nginx'in includeişlevini arıyorsunuz : http://nginx.org/en/docs/ngx_core_module.html#include

Bu şekilde kullanabilirsiniz:

server {
  listen 80;
  server_name example.com;
  […]
  include conf/location.conf;
}

include ayrıca joker karakterleri de kabul eder.

include include/*.conf;

dizindeki her * .conf dosyasını içerir .


Bunu zaten düşündüm, ancak atladım, çünkü bu, siteler etkin klasördeki dosyaların bağlantısını kaldırmak yerine dosya içeriğini düzenlemek anlamına gelir.
oliverjkb

@ardukar böylece çözümün site etkin klasörü kullanmak oldu?
Mark Stosberg

Şu anda biraz kafam karıştı ...
FLXN

Çok geç cevap verdiğim için üzgünüm! Bildirimi okumadım gibi görünüyor .. -.- FLXN'nin çözümünü zaten kullanıyorum. Ama bu beni mutlu etmiyor. Yönetimin yalnızca Tarayıcı üzerinden yapıldığı daha küçük bir şirket için bir sunucu oluşturduğumdan, bir dosyanın içinde değişiklik yapmak istemiyorum. Bir hizmet tarayıcı aracılığıyla devre dışı bırakılırsa, nginx'teki alt klasörün ('konum' deyin) da devre dışı bırakılmasını istiyorum, bu nedenle siteler etkin klasördeki yapılandırma dosyasının bağlantısını kaldırmak en iyi fikir gibi görünüyordu.
oliverjkb

6

İle site klasörleri oluşturabilirsiniz

mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled

# Ve sonra büyük your_config.confdosyanızı daha küçük dosyalara bölün sites-available/:

YOURCONF="/etc/nginx/conf.d/your_config.conf"
cd /etc/nginx
mkdir -p sites-available sites-enabled
cd  sites-available/
csplit "$YOURCONF" '/^\s*server\s*{*$/' {*}
for i in xx*; do
  new=$(grep -oPm1 '(?<=server_name).+(?=;)' $i|sed -e 's/\(\w\) /\1_/g'|xargs);
  if [[ -e $new.conf ]] ; then
    echo "" >>$new.conf
    cat "$i">>$new.conf
    rm "$i"
  else
    mv "$i" $new.conf
  fi
done

(Bunu şu kaynaktan geliştirdim: /programming//a/9635153/1069083 )

Bunu, httpbloğunuzun içine sonuna eklediğinizden emin olun /etc/nginx/conf.d/*.conf;:

include /etc/nginx/sites-enabled/*.conf; 

Not: serverblokların dışındaki yorumlar her dosyanın altına kesilir, bu nedenle bir serverblok ÖNCE yorum yapılmamalıdır . ilk satırdaki yorumları bloğun İÇİNDE taşı.

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.