ПРОЕКТЫ 


  АРХИВ 


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: Получение конфигурации


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Получение конфигурации
  • From: Anton Dutov <anton.dutov@xxxxxxxxx>
  • Date: Wed, 30 Jun 2010 23:34:19 +0500
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=HDOIr/bWJck+wHMvhGdrfRBNZsEYgyyG+85WWXYiwpM=; b=Kvi+b9FwlqXwGQ1HV4bIulLp599LUMHKLvzQfDHNlqq8LynOGvwHB6AkHa93nBo7uT XZYTJt2DvDaIViMgabPcXeOjyIvv9rEsaLxwWD/inMDlLfCaSH+mXoDEurYZqpVj+68H 0Jq9PKTg7aTmRVPT3H6hgqCqxWdKJm91bv4sc=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=Y+69p1u6t/JhgKkq2LOFxYD00dMv6rvqAs0CpSqud6yVktci1kD5JCfhTDIk1B2b5P qzhAHdm/hdFG+pO9lIwGFIQLiJHxj8o0cZIKM3ET28DrTJyoDDyn2ox0m48CkSV8Bv7q WhmyT73DUEKxPRn0xnIQevu41KQPhbbywxWLc=
  • In-reply-to: <20100630082122.GD77697@xxxxxxxxxxxxx>
  • References: <AANLkTinzAOBh0S-pg6PXtw7FKm5AEI35qJQWEXJTlYzF@xxxxxxxxxxxxxx> <20100630082122.GD77697@xxxxxxxxxxxxx>

> Какого из ? (Их может быть много).
> На этой стадии доступна только глобальная конфигурация http.
> А что нужно сделать ?
Ну я взялся за реализацию то иди которую как то давно вам говорил о
возможности выполнения системных команд при запуске/остановке
виртуального хоста
server{
   ...
   onstart /path/to/some_fsgi_or_wsgi_app --param --pid /path/to/pidfile;
   onstop kill `cat /path/to/pidfile`;
   onstop rm -f /path/to/pidfile;
   ...
}

Примерно год назад я на скору руку накатал простейший модуль который
на стадии разбора создавал два массива команд(общие списки для всех
виртуальных хостов) один команды запуска - второй для остановки.
на стадии разбора директив - мой обработчик заполнял массивы значениями.
на стадии init_module осуществлял перебор массива команд запуска и
выполнял их через system();
на стадии exi_master осуществлял перебор массива команд остановки и
выполнял их через system();

я знал о проблеме что во время запуска nginx -t (тест конфига) не
выполняется обработчик exist_master, а значит при запуске теста
конфигурации контекст виртуальных серверов подымется а в конце теста
не опустится. на тот момент мне нужды в этом не было.

Сейчас решил все переписать.
Раньше у меня был было два глобальных массива, общие для всех вирт.
серверов, сейчас же решил сделать по научному
предварительно создаю и мержу через create/merge_srv_conf - заполняю
их командами.
далее в init_process нужно получить конфиги вирт. хостов и выполнить
команды запуска.

почему в init_procces? потому что он не выполняется при тесте
конфига(как и exit_master) а значит избавит от проблемы выполнения
команд во время теста конфигурации, но поскольку процессов может быть
более одного(и соотв. обработчик вызовется несколько раз) нужно
добавить флаг о том команды запуска уже выполнены.

init_module я взял для примера т.к. у него на входе такие же параметры
как и init_process.
Если как вы говорите на этих стадиях невозможно получить конфигурацию
вирт. хоста, то можно вернутся к глобальным(общим для всех вирт.
хостов) массивам.

существует ли возможность проверить(из модуля) что nginx запустился
именно в рабочем режиме?

возможны ли какие либо подводные камни вышеописанного метода?

P.S. извиняюсь за "многобукв".
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.