nginx支援動態模組

2021-07-26 09:34:26 字數 1219 閱讀 7004

之前一直以為nginx只支援靜態模組,每次新增新模組的時候只能重新編譯,最近在看nginx的原始碼,發現新版nginx已經支援進行動態載入模組。

通過模組動態載入指令load_module,我們可以在執行中修改nginx的配置,指定要載入的第三方模組,然後reload,是不是方便了很多。

core模組已經新增了相關的command: ,

對應的command handler如下:

static char *

ngx_load_module(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)

value = cf->args->elts;

file = value[1];

if (ngx_conf_full_name(cf->cycle, &file, 0) != ngx_ok)

cln = ngx_pool_cleanup_add(cf->cycle->pool, 0);

if (cln == null)

handle = ngx_dlopen(file.data);

if (handle == null)

cln->handler = ngx_unload_module;

cln->data = handle;

modules = ngx_dlsym(handle, "ngx_modules");

if (modules == null)

names = ngx_dlsym(handle, "ngx_module_names");

if (names == null)

order = ngx_dlsym(handle, "ngx_module_order");

for (i = 0; modules[i]; i++)

ngx_log_debug2(ngx_log_debug_core, cf->log, 0, "module: %s i:%ui",

module->name, module->index);

}return ngx_conf_ok;

#else

ngx_conf_log_error(ngx_log_emerg, cf, 0,

"\"load_module\" is not supported "

"on this platform");

return ngx_conf_error;

#endif

}

Nginx 動態新增模組

nginx模組依賴 nginx的一些模組需要第三方支援,例如gzip模組需要zlib庫,rewrite模組需要pcre庫,ssl功能需要openssl庫。根據需求新增不同模組 例新增echo模組 詳情請看 當前nginx版本為 1.12.2,選擇echo版本為0.61 8.1.1.修改nginx.c...

Nginx 動態新增模組

這個在工作中遇到的其中乙個活生生的例子,因為nginx在編譯安裝的時候並沒有考慮太多,而且我一向的做法都是按照專案需要安裝相應的功能,盡量讓服務和應用簡潔。我一向的作風 configure prefix path to nginx?是不是夠簡潔,僅僅乙個安裝路徑。如果兄弟們覺有欠妥的話,請直接批評我...

nginx載入動態模組

不使用動態模組時 使用動態模組 不是所有的nginx模組都可以以動態模組方式加入nginx 載入方式參見nginx模組載入 需要注意的是 with http image filter module dynamic 如果採用動態模組的載入方式,那麼需要將 usr local src nginx 1.8...