1

私の小さなnginxモジュールでいくつかの問題(および頭痛)が発生しています。最近、たくさんのモジュールコードと、nginxモジュールに関するたくさんのことを見てきましたが、必要なことをなんとかすることができません。これが私の問題です:「mymodule」と呼ばれる独自のnginxモジュールを作成しました。そのloc_conf構造は次のようになります。

typedef struct {
    void *serverConf;
    ngx_str_t server_file;
} ngx_http_mymodule_loc_conf_t;

そのコマンド構造は次のようになります。

static ngx_command_t ngx_http_mymodule_commands[] = {
  {
   ngx_string("mymodule"),
   NGX_HTTP_LOC_CONF | NGX_CONF_TAKE1,
   ngx_http_mymodule,
   NGX_HTTP_LOC_CONF_OFFSET,
   0,
   NULL
  },
ngx_null_command 
};

ngx_http_mymodule関数で、いくつかの作業を行い、ngx_http_mymodule_loc_conf_tにserverConfポインターを設定します。問題は、スレッド/プロセスが終了したときにそのserverConfポインターを取得したいということです。しかし、スレッドプロセスまたはマスターを終了するときにngx_module_tに指定される唯一のパラメーターはngx_cycle_t *であり、そのserverConfポインターで動作するためにngx_http_mymodule_loc_conf_tを取得する方法が見つかりません。

[編集]私はスレッド出口コールバックでこれを試しましたが、null以外のserverConfポインターがありませんでした:

ngx_http_mymodule_loc_conf_t *mymodulecf = (ngx_http_mymodule_loc_conf_t *)ngx_get_conf(cycle->conf_ctx, ngx_http_mymodule_module);

どんな助けやアイデアもいただければ幸いです:)よろしくお願いします。

4

0 に答える 0