接下来可以按上面的 测试lua-nginx-module 小节测试。唯一不同的是无需使用kill -QUIT退出Nginx,直接使用nginx -s reload热重启就行了。
关于Nginx编译动态模块NGINX 从 1.9.11 版本起,引入了一个新的模块加载方式:动态加载。这意味着模块可以根据配置文件,在 NGINX 运行时动态的加载。同样,也可以通过修改配置文件然后 Reload NGINX 来卸载模块。从此不再需要替换nginx文件即可增加第三方扩展。
如果是相同机器,可以直接把已编译好的so文件复制到另外一台机器,直接修改nginx.conf即可载入相应模块,这样可以节省编译时间及可能产生的问题。
注意:不是所有模块都可以转换成动态模块。目前官方只有几个模块支持动态加载,第三方模块需要升级支持才可编译成模块:
$ ./configure --help | grep dynamic --with-http_xslt_module=dynamic enable dynamic ngx_http_xslt_module --with-http_image_filter_module=dynamic enable dynamic ngx_http_image_filter_module --with-http_geoip_module=dynamic enable dynamic ngx_http_geoip_module --with-http_perl_module=dynamic enable dynamic ngx_http_perl_module --with-mail=dynamic enable dynamic POP3/IMAP4/SMTP proxy module --with-stream=dynamic enable dynamic TCP/UDP proxy module --with-stream_geoip_module=dynamic enable dynamic ngx_stream_geoip_module --add-dynamic-module=PATH enable dynamic external module --with-compat dynamic modules compatibility模块API对于静态模块和动态模块是一致的,但是 config 文件和编译方法略微不同。详见:
参考1、Nginx编译安装Lua模块遇到的大坑 - 刘信坚的博客 - CSDN博客
https://blog.csdn.net/qq_38974634/article/details/81625075
2、Nginx安装lua-nginx-module模块 - 微信-大数据从业者 - 博客园
https://www.cnblogs.com/felixzh/p/8709201.html
3、nginx启动、重启、重新加载配置文件和平滑升级 - 蝈蝈的博客 - CSDN博客
https://blog.csdn.net/gnail_oug/article/details/52754491
4、[译] NGINX - 将静态模块转换为动态模块
https://gist.github.com/undirectlookable/2a39cc85b16e2218f162
5、How to Compile Dynamic Modules for NGINX Plus
https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/
6、Nginx 添加nginx_lua_module模块 | 封尘网
https://www.58jb.com/html/182.html
7、NGINX 加载动态模块(NGINX 1.9.11开始增加加载动态模块支持) - Tinywan - 博客园
https://www.cnblogs.com/tinywan/p/6965467.html