Я хочу передать переменную 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"]
Возможно ли это вообще?
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)
.