Як встановити для сервера ENV значення в Nginx?


9

Я запускаю проект, який використовує змінні середовища для встановлення підключення до бази даних та ще декількох речей. (Вони не хотіли використовувати конфігураційні файли, оскільки люди необережні і перезаписують їх).

У будь-якому випадку, я використовую nginx, і хоча він підтримує env - він, здається, не підтримує його досить добре . Не можна встановлювати значення env на основі блоку на сервері . Іншими словами, це не спрацює:

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

Ви повинні зробити це:

env FOO = "bar";

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

Що означає, що я не можу мати специфічні для vhost значення. Тому я повинен створити цілу конфігурацію vhost для кожного сайту і активувати лише той, який я хочу в даний момент, щоб значення було встановлено правильно.

Чи є спосіб обійти це?


Чи не конфігурація nginx така ж сприйнятлива до перезапису, як і конфігурація програми? Який модуль використовується для подачі запитів на додаток?
Шейн Мадден

@ShaneMadden, конфігурація nginx не є частиною проекту, але повинна створюватися на кожному сервері вручну. Так що це не буде перезаписано. Те, що я розмістив, не є повноцінними конфігураціями - ми також просто використовуємо стандартні fastcgi_passдля пересилання запиту в ruby ​​/ php.
Xeoncross

Відповіді:


13

Виявляється, якщо ви використовуєте fastcgi, ви зможете обійти це, передаючи значення з fastcgi_param .

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";
    }
}

Так, саме це я і запропонував. Бий мене до цього! (Сьогодні я не голосую, трохи відповім на цю відповідь)
Шейн Мадден

@ShaneMadden, можливо, ти можеш мені допомогти в цьому .
Xeoncross

2
Чи є спосіб встановити server_nameдинамічно? Оскільки це віртуальний хост, який працює на OS X, хост nginx має інший IP, тому він не вирішує.
тако
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.