Как правильно использовать переменные ENV в конфигурации Nginx?

Я хочу передать переменную env RAILS_ENV в nginx и использовать ее для установки значения для директивы rails_env .

Я могу прочитать значение переменная из среды с модулем LUA:

location @app {
    set_by_lua $env_rails_env 'return os.getenv("RAILS_ENV")';
    return 200 'rails env is: ${env_rails_env}';
}

Когда я скручиваю его, я получаю правильный ответ:

[jsosic@workstation ~]$ curl http://localhost:3005/
rails env is: development

Но если я хочу использовать его в качестве значения для директивы nginx:

location @app {
    set_by_lua $env_rails_env 'return os.getenv("RAILS_ENV")';
    rails_env         $env_rails_env;
    limit_req         zone=one burst=100;
    passenger_enabled on;
}

Я получите следующий журнал:

Message from application: '${env_rails_env}' database is not configured.
Available: ["default", "development", "test", "production"] 

Возможно ли это вообще?

1
задан 25 April 2018 в 02:28
1 ответ

Eftir nokkra rannsókn virðist sem farþega_app_env (sem rails_env er alias við) er ekki að samþykkja breytuna og í staðinn meðhöndla hana sem bókstaflega.

https://github.com/phusion/passenger-docker/issues/28

Svo í stað þess að $ env_rails_env stækkar til innihalds $ RAILS_ENV lesið af lua, það er meðhöndlað sem strengur $ env_rails_env . Þess vegna er loglínan að tilkynna gagnagrunn ekki stillt .

Einnig, á nginx Q & A, ætti ekki að nota breytur í stillingarskrár:

"[Breytur] eru frekar kostnaðarsamar miðað við látlaus truflanir stillingar. [A] fjölþenslu og „fela í sér“ tilskipanir ætti að nota [með] t.d. sed + make eða önnur algeng sniðmátakerfi. " http://nginx.org/en/docs/faq/variables_in_config.html

Það sem ég endaði með er að nota envsubst (1) .

0
ответ дан 4 December 2019 в 04:02

Теги

Похожие вопросы