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
|