ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re[2]: ENV в nginx.conf




On 15.07.2009, at 14:16, xinu wrote:

Алексей, Игорь,  Здравствуйте!

как Вы полагаете, было ли бы возможно имплементировать не всех ENV из shell'а поголовно,
а лишь екстра задекларированных в конфиг файле? т.е. типа:
  read_env <имя_ENV>
или
  export_env <имя_ENV>
для ее дальнейшего использования.

Объясню на примере:
у меня есть несколько серверов (под большой нагрузкой - поетому nginx :-). они отдают статику генерируемую tomcatом. чтоб узнать кто ее сгенерил - я сажу (пока в апаче) ENV в HTTP Header (в примере).
жесть какая-то
ну есть же у них какие-то отличия?
адрес, порт, они могут сами что-то добавить в заголово, а нгинх может его прочитать и тд и тп
есть куча более "кошерных" способов узнать откуда что берётся


Преимущества такого решения:
ENV - я сажу в start-sripte - который очень редко изменяется. при изменении httpd.conf а копирую один файл на все сервера (без необходимости в обработке напильником на каждом сервере!!! что увеличивало бы не только неудобство но и вероятность ошибки)

поетому был бы рад, если бы Вы имплементировали "частичное" использование заранее задекларированных переменный среды

с ув. Сергей





-----Original Message-----
From: Igor Sysoev <is@xxxxxxxxxxxxx>
To: nginx-ru@xxxxxxxxx
Date: Wed, 15 Jul 2009 12:32:09 +0400
Subject: Re: ENV в nginx.conf

On Wed, Jul 15, 2009 at 12:06:08PM +0400, Михаил Монашёв wrote:

Здравствуйте, Алексей.

Мне кажется, что иметь конфиг, которые зависит от очень многих внешних
воздействий не совсем удобно. Например, работавший nginx вдруг при
рестарте сервера не поднимается. А потом оказывается, что кто-то
когда-то что поменял (не в конфиге) и забыл проверить после этого
работоспособность nginx-а. Т.е. конфигурить надо конфигом, а не как-то
или где-то ещё.

Ну в общем, да. На мой взгляд, именно этим переменные среды неудобны.
Наоборот, переменные можно задать в конфиге (с некоторыми ограничениями):
http://sysoev.ru/nginx/docs/ngx_core_module.html#env

AK> кстати смотрю и не понятно - а почему нету такого до сих пор, реально
AK> ведь там ваще не сложно реализовать вроде бы

в моем частном случае, я думал вынести header в include, а вот
if() логику - таки похоже прийдется генерить скриптом - хотя это
на мой взгляд не самое лучшее решение.

все таки очень не хватает ENV!!!
не уже ли это сложно имплементировать?

еще раз спасибо

Генерите конфиг скриптом, который будет прописывать в конфиг нужные
значения.

x> что то не могу найти возможности доступа в nginx.conf к
x> переменным среды. т.е я не хочу передавать переменные скриптам, а в x> использовать их в блоке if()-nginx.conf. (или как в етом примере -
x> садить header)

x> пробую напр. так:
x> $ HNAME=web1  ../nginx/sbin/nginx -t
x> [emerg]: directive "add_header" is not terminated by ";" in nginx.conf:21
x> configuration file ../nginx/conf/nginx.conf test failed

x> в конфиге:
x>    21      add_header  X-Gererator   ${ENV:HNAME} ;
x> пробовал и так:
x>    21      add_header  X-Gererator   $ENV{HNAME} ;

x> все это не катит.
x> а как Правильно?
x> спасибо.





--

С уважением,
Михаил Монашёв, SoftSearch.ru
mailto:postmaster@xxxxxxxxxxxxx
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.


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







 




Copyright © Lexa Software, 1996-2009.