directive "env"

Igor Sysoev igor на sysoev.ru
Вс Авг 21 08:54:29 UTC 2011


On Sat, Aug 20, 2011 at 06:03:32PM -0400, Dmitry Veselov wrote:
> объясните, пожалуйста, принцип
> действия директивы env
> 
> в секции main:
> env domain=192.168.1.123;
> 
> в конфиге домена
> listen $domain:443;
> 
> получается вот что:
> host not found in "$domain:443" of the "listen" directive in
> /etc/nginx/conf.d/domain.conf:6
> 
> что я делаю не так?

Сам nginx не использует переменные среды, то есть, то, что в шелле можно
поставить или посмотреть с помощью команд set/env.
Дело в том, что nginx обуляет всё среду за исключением переменной TZ,
но некоторыми библиотеками можно управлять этими переменными, поэтому
и появилась директива env:

http://sysoev.ru/nginx/docs/ngx_core_module.html#env

Переменные вида $... - это внутренние переменные nginx'а, существующие
во время исполнения запроса. На стадии конфигурации этих переменных нет.

> ps: задача на нескольких серверах
> поддерживать одинаковые конфиги, но с
> адресами ssl это не так просто...

listen $hostname:443;

Нужно заметить, что $hostname в данном случае не обычная переменная
nginx'а, а хак, своего рода макро-подстановка.


-- 
Игорь Сысоев
http://sysoev.ru



Подробная информация о списке рассылки nginx-ru