NGINX и переменные среды из файла конфигурации - PullRequest
3 голосов
/ 19 января 2011

Я пытаюсь установить некоторые переменные окружения в nginx через его файл конфигурации. Я использую nginx / 0.8.53, и он не работает.

server {
    listen 80;
    server_name localdictus;
    root /opt/vdmo_dictus/public;   # <--- be sure to point to 'public'!
    passenger_enabled on;
    rails_env development;
    env VDMO_MANDANT = "somevalue";
    }

Это сообщение об ошибке:

unknown directive "env" in /opt/nginx/conf/nginx.conf:43

Документация говорит мне, что есть команда "env" ... так что я делаю не так ?? http://wiki.nginx.org/CoreModule#env

Кстати, установка переменных среды через экспорт в оболочке не подходит для моего приложения.

Вот строки:

37:    server {
38:    listen 80;
39:    server_name localdictus;
40:    root /opt/vdmo_dictus/public;   # <--- be sure to point to 'public'!
41:    passenger_enabled on;
42:    rails_env development;
43:    env VDMO_MANDANT = "somevalue";
44:    }

С уважением,

Alex

Ответы [ 3 ]

5 голосов
/ 19 января 2011

Из документации , которую вы связали с , «Контекст» для директивы env составляет main, а не server.Поместите директиву вне вашего server { ... } блока (вне любого блока).

См. Также это обсуждение .Я не верю, что директива env делает то, что вы ищете.

0 голосов
/ 26 июня 2012

Не передавайте директиву env. Просто используйте флаг -E при запуске nginx:

 sudo -E /usr/local/nginx/sbin/nginx
0 голосов
/ 19 января 2011

Решение для установки переменных среды для приложения rails с использованием nginx.

Например, ваш RAILS_ROOT: / opt / myapp_MANDANT

Тогда следующий код извлечет MANDANT изRAILS_ROOT путь и установите в enils. Rails.

split = RAILS_ROOT.split("_")
puts split.inspect


if split.size > 1
    ENV['VDMO_SYSTEM'] = split[2]
    ENV['VDMO_MANDANT'] = split[1]
elsif split.size > 0
    ENV['VDMO_SYSTEM'] = nil
    ENV['VDMO_MANDANT'] = split[1]
end

поместите этот код в ваш файл environment.rb для работы.

Хороший способ использования этого подхода - монтировать с -опция связывания.

Пример:

   mkdir railsapp_mandant
   mount -t /originalsource /railsapp_mandant

, затем установите публичный путь приложения rails в / originalsource / public / вместо / railsapp_mandant / public /

...