使用动态加载的第三方模块, 在 nginx/conf/nginx.conf 文件第一行添加: load_module "/usr/local/nginx/modules/ngx_http_concat_module.so";
nginx-http-concat-module
#!/bin/bash
#当前的时间
DATETIME="$(date +%Y_%m_%d_%H%M%S)"
#存储路径
STORE="/root"
#文件夹名称
DIR_NAME="nginx-http-concat-master"
#模块
MODULE_NAME="ngx_http_concat_module"
#Nginx 目录
NGINX_PATH="/opt/nginx-1.21.6"
# ========= 前置 =========
# 一、目标: 转换配置文件 config 适配静动态编译
echo -e "\033[32m 修改 config 文件 \033[0m"
#1.备份文件
mv ${STORE}/${DIR_NAME}/config ${STORE}/${DIR_NAME}/config_${DATETIME}
#2.删除旧文件
rm -rf ${STORE}/${DIR_NAME}/config
#3.新配置
cat >>${STORE}/${DIR_NAME}/config <<EOF
ngx_addon_name=${MODULE_NAME}
if test -n "\$ngx_module_link"; then
ngx_module_type=HTTP
ngx_module_name=${MODULE_NAME}
ngx_module_srcs="\$ngx_addon_dir/${MODULE_NAME}.c"
. auto/module
else
HTTP_MODULES="\$HTTP_MODULES ${MODULE_NAME}"
NGX_ADDON_SRCS="\$NGX_ADDON_SRCS \$ngx_addon_dir/${MODULE_NAME}.c"
fi
EOF
# ========= 前置 =========
# ========= 开始 =========
echo -e "\033[32m 动态加载第三方模块: ${MODULE_NAME} \033[0m"
#二、动态加载第三方模块并将生成的 .so 文件复制到 ngin 存储模块的文件夹中
#1.解压得到第三方模块文件夹
#1.1 如果不存在则下载
if [ ! -e ${STORE}/${DIR_NAME}.zip ]; then
wget -t 0 -O ${STORE}/${DIR_NAME}.zip -c https://github.com/alibaba/nginx-http-concat/archive/refs/heads/master.zip
echo -e "\033[32m 下载成功 \033[0m"
yum install -y unzip
unzip ${DIR_NAME}.zip
fi
#2.编译
cd ${NGINX_PATH}
./configure --with-compat --add-dynamic-module=${STORE}/${DIR_NAME} && make modules
#3.创建 nginx 存储模块的文件夹
if [ ! -d /usr/local/nginx/modules ]; then
mkdir /usr/local/nginx/modules
fi
#4.复制 .so 文件
cd objs/
if [ -e ${NGINX_PATH}/objs/${MODULE_NAME}.so ]; then
cp ${MODULE_NAME}.so /usr/local/nginx/modules
else
echo -e "\033[31m error: ${MODULE_NAME}.so not found \033[0m"
exit 0
fi
echo -e "\033[32m 加载第三方模块完成 \033[0m"