通过chef动态加载nginx第三方模块

Dynamic loading of nginx third party module via chef

我正在尝试将第三方模块动态加载到 nginx。

https://github.com/stnoonan/spnego-http-auth-nginx-module

Nginx 是使用 chef 配方通过包安装来安装的。

我尝试将模块编译为模块二进制 .so 文件并将其复制到 /etc/nginx/modules 目录并将以下行添加到 nginx.conf,但它显示错误 "unknown directive load_module"。

nginx.conf

load_module modules/ngx_http_auth_spnego_module.so ;

厨师食谱

bash 'create_spnego_module' do
   code <<-EOH
    mkdir -p #{node['nginx']['dir']}/modules
   EOH
 end

cookbook_file "#{node['nginx']['dir']}/modules/ngx_http_auth_spnego_module.so" do
  source 'ngx_http_auth_spnego_module.so'
  owner  'root'
  group  node['root_group']
  mode   '0644'
  notifies :reload, 'service[nginx]', :delayed
end

有没有其他方法可以通过 chef 加载此模块而无需重新编译 nginx 源代码?

如评论所述,您的Nginx版本太旧,无法动态加载模块。您需要使用新模块重新编译它或安装新版本。

模块二进制编译时,编译模块的配置参数要和安装的nginx一致。

使用命令行参数 'nginx -V' ,在 nginx 安装期间检查配置参数。在模块编译期间使用相同的参数。