Nginx'te sunucuya özgü ENV değerlerini nasıl ayarlarsınız?


9

Ben veritabanı bağlantısı ve diğer birkaç şey ayarlamak için ortam değişkenleri kullanan bir proje başlatıyorum. (İnsanlar dikkatsiz oldukları ve üzerine yazdıkları için yapılandırma dosyalarını kullanmak istemediler).

Her neyse, nginx kullanıyorum ve env'yi desteklerken - yeterince iyi desteklemiyor gibi görünüyor . Env değerlerini sunucu başına blok bazında ayarlayamazsınız . Başka bir deyişle, bu işe yaramaz:

server {
    listen 80;
    server_name domain;
    env FOO = "bar";
}

Bunu yapmalısın:

env FOO = "bar";

http {
    server {
        listen 80;
        server_name domain;
    }
}

Yani vhost'a özgü değerlerim olamaz. Bu nedenle, her site için bir tam vhost yapılandırması oluşturmalı ve sadece şu anda istediğim şeyi etkinleştirmeliyim, böylece değer doğru ayarlanmalıdır.

Bu sorunu çözmek için herhangi bir yolu var mı?


Nginx yapılandırması uygulamanın yapılandırması kadar üzerine yazmaya duyarlı değil mi? Uygulamaya istekleri beslemek için hangi modül kullanılıyor?
Shane Madden

@ShaneMadden, nginx config projenin bir parçası değildir, ancak her sunucuda el ile oluşturulması gerekir. Bu yüzden üzerine yazılmayacak. Ne gönderdiğim tam yapılandırmalar değil - biz de sadece fastcgi_passruby / php isteğini iletmek için standart kullanıyoruz .
Xeoncross

Yanıtlar:


13

Fastcgi kullanıyorsanız , fastcgi_param'dan değerleri geçirerek bunun üstesinden gelebilirsiniz .

server {
    listen 80;
    server_name domain;

    # Pass PHP scripts to php-fastcgi listening on port 9000
    location ~ path/to/it {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param FOO "bar";
    }
}

Evet, önermek üzereydim. Beni döv! (Bugün için oy kullanamıyorum, bu cevabı biraz oylayacağım)
Shane Madden

@ShaneMadden belki bana bu konuda yardımcı olabilirsiniz .
Xeoncross

2
server_nameDinamik olarak ayarlamanın herhangi bir yolu var mı ? OS X üzerinde çalışan bir sanal ana bilgisayar olduğundan, nginx ana bilgisayarının farklı bir IP'si vardır, bu yüzden çözülmez.
taco
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.