ngx_http_conf_get_module_main_conf questions

Maxim Dounin mdounin at mdounin.ru
Sun Jun 2 22:26:49 UTC 2013


Hello!

On Sun, Jun 02, 2013 at 03:41:22PM -0400, vagner wrote:

> Заранее извиняюсь за возможно глупый вопрос. Первый раз пишу модуль под
> nginx. Конечная цель - получение статистики из модуля
> ngx_http_static_module. Для этих целей создан модуль подобный ustats,
> опиcание модуля: 
> ngx_http_module_t  ngx_http_filestats_module_ctx =
> {
>     NULL,                                  /* preconfiguration */
>     NULL,                                                      /*
> postconfiguration */
> 
>     NULL,                                                              /*
> create main configuration */
>     NULL,                                  /* init main configuration */
> 
>     NULL,                                  /* create server configuration
> */
>     NULL,                                  /* merge server configuration */
> 
>     ngx_http_filestats_create_loc_conf,       /* create location
> configuration */
>     ngx_http_filestats_merge_loc_conf         /* merge location
> configuration */
> };
> 
> ngx_module_t  ngx_http_filestats_module =
> {
>     NGX_MODULE_V1,
>     &ngx_http_filestats_module_ctx,           /* module context */
>     ngx_http_filestats_commands,              /* module directives */
>     NGX_HTTP_MODULE,                       /* module type */
>     NULL,                                  /* init master */
>     NULL,                                  /* init module */
>     NULL,                                  /* init process */
>     NULL,                                  /* init thread */
>     NULL,                                  /* exit thread */
>     NULL,                                  /* exit process */
>     NULL,                                  /* exit master */
>     NGX_MODULE_V1_PADDING
> };
> 
> При старте нормально проходит инициализация переменных, и присваиваются
> соответствуюшие значения из конфига. В ngx_http_static_module вписываю
> соответствующую строку для получения данных (структуры
> ngx_http_filestats_loc_conf_t) от ngx_http_filestats_module:
> uslc = ngx_http_get_module_loc_conf(r, ngx_http_filestats_module);
> Далее при получении значений, я получаю только то, то присвоено в
> ngx_http_filestats_merge_loc_conf, но то, что должно присваиваться (и
> присваивалось при старте) в ngx_command_t я теряю. Подскажите пожалуйста,
> как я могу получить присвоенные значения в структуре
> ngx_http_filestats_loc_conf_t после парсинга конфига в другом модуле?

Если в ngx_http_filestats_merge_loc_conf что-то было присвоено, то 
извлечь что-то, что было присвоено до этого - уже невозможно.

Попробуйте показать код целиком, добавив в него отладочное 
логгирование, демонстрирующее ту проблему, которую вы пытаетесь 
решить.  Возможно, станет понятнее, что вы имели ввиду. 

-- 
Maxim Dounin
http://nginx.org/en/donation.html



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