Я начинаю проект, в котором используются переменные среды для установки соединения с базой данных и некоторых других вещей. (Они не хотели использовать файлы конфигурации, поскольку люди неосторожны и перезаписывают их).
Во всяком случае, я использую nginx, а пока он поддерживает env - не похоже поддерживать это достаточно хорошо. Вы не можете установить значения env на на основе серверных блоков. Другими словами, это не сработает:
server {
listen 80;
server_name domain;
env FOO = "bar";
}
Вы должны сделать это:
env FOO = "bar";
http {
server {
listen 80;
server_name domain;
}
}
Это означает, что у меня не может быть значений, специфичных для vhost. Поэтому я должен создать полную конфигурацию vhost для каждого сайта и активировать только тот, который мне нужен в данный момент, чтобы значение было установлено правильно.
Есть ли способ обойти это?
Оказывается, если вы используете 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";
}
}