nginx 动态模块问题
nginx 的动态模块是一个很不错的模块共享方案,但是也有一些限制而且问题比较明显
限制
必须使用相同的nginx 版本构建,nginx 的升级容易造成服务启动失败(尤其是自己构建的一些三方模块)
推荐解决方法
实际上nginx 官方提供了一套完备的构建(nginx 以及模块)的依体系,如果我们参考了相关玩法,可以保证我们升级不会造成大的问题
具体是官方提供了pkg-oss 包,里边包含了如果进行官方内置默认以及三方模块构建的方法,同时包含了一个build_module.sh 的构建脚本
在我们使用build_module.sh 构建好相关的deb以及rpm包之后(也可以包含apk的)可以基于私服,或者配置本地私服的模式解决安装的问题
说明
尽管pkg-oss 很方便,但是不能保证100%三方模块兼容,动态模块是很好,但是做好ci/cd 很重要,不然升级处理都是一个比较大的问题
很容易造成线上故障的
参考资料
https://www.nginx.com/blog/creating-installable-packages-dynamic-modules/
https://hg.nginx.org/
https://hg.nginx.org/pkg-oss/file/tip
https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/
https://www.nginx.com/blog/dynamic-modules-development/
https://www.nginx.com/resources/wiki/extending/converting/
https://www.nginx.com/resources/wiki/modules/index.html