怎么解决宝塔面板安装防火墙/网站监控报表提示Nginx配置规则错误:unknown directive “lua_shared_dict”?

马肤
这是懒羊羊

温馨提示:这篇文章已超过597天没有更新,请注意相关的内容是否还可用!

最近小编遇到一些问题今天分享一下

宝塔面板目前的最新版本7.9.2真的是有点坑了,无论用centos7.6,debian10还是ubuntu20系统新装宝塔7.9.2后可以正常安装宝塔专业版防火墙和网站监控报表,但是这两个东西是不会正常工作的,重启nginx的话会提示如下错误:

nginx: [emerg] unknown directive "lua_shared_dict" in /www/server/panel/vhost/nginx/total.conf:1nginx: configuration file /www/server/nginx/conf/nginx.conf test failed

到这个错误真的是有点懵圈了,不用问,百度上是没有这个问题的解决方法的,宝塔论坛也去发帖求助,官方的运维很显然还没意识到7.9.2的bug,只给出了一个很笼统的解决方案,试了一下,不出所料的毛用么有。这篇文章就来记录一下站长如何解决这个问题的。

怎么解决宝塔面板安装防火墙/网站监控报表提示Nginx配置规则错误:unknown directive “lua_shared_dict”?,bt.png,宝塔,第1张


2、查找原因

1)官方给我出的解决方案如下,当然这个方法可能是有用的,不过对于大鸟碰到的这个问题是毛用没有。

报错原因是:系统缺少luajit组件,导致nginx使用异常;解决方法:卸载nginx防火墙/nginx免费防火墙,网站加速(这些插件没装的话可忽略此步骤)卸载当前版本的nginx,使用编译模式安装一遍nginx1.20,编译安装会自动安装luajit组件;装好nginx后重装前面卸载的那几个插件即可正常使用。

2)问题的症结所在

这个问题的具体原因是缺少两个nginx模块:ngx_devel_kit和lua_nginx_module,我们只要把这两个模块编译到nginx里面就可以解决。不过你最好用命令:nginx -V 来检查一下你的nginx扩展。大鸟用这个命令来检查发现确实是少了这两个模块。

3、解决问题

既然找到了症结所在,那么我们只要开始编译安装这两个模块即可,具体的方法如下:

1)用命令来查看自己的nginx版本号,这一这里的v是小写,命令如下:

nginx -v

2)到/www/server/nginx/src这个目录下看看ngx_devel_kit和lua_nginx_module这两个模块在不在,宝塔默认是编译好这两货的,也就是7.9.2太奇葩。一般都是有的,如图:

怎么解决宝塔面板安装防火墙/网站监控报表提示Nginx配置规则错误:unknown directive “lua_shared_dict”?,不.png,宝塔,第2张

3)修改nginx.sh

宝塔面板找到路径:/www/server/panel/install找到文件nginx.sh 打开开始编辑。大概在278行,我们添加 --add-module=srclib/ngx_devel_kit --add-module=srclib/lua_nginx_module 不会添加看代码,标注下划线的地方就是我们要添加的2个模块:

./configure --user=www --group=www --prefix=${Setup_Path} ${ENABLE_LUA} --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=${Setup_Path}/src/ngx_cache_purge --add-module=${Setup_Path}/src/nginx-sticky-module --with-openssl=${Setup_Path}/src/openssl --with-pcre=pcre-${pcre_version} ${ENABLE_HTTP2} --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt="-Wl,-E" --with-cc-opt="-Wno-error" ${jemallocLD} ${ENABLE_WEBDAV} ${ENABLE_NGX_PAGESPEED} ${ADD_EXTENSION} ${i_make_args}

4)因为默认是已经有这两个模块了,所以我们直接编译即可,我们回到ssh客户端使用命令开始编译,根据自己的版本,因为大鸟这台服务器安装的版本是nginx1.20.2所以用编译命令如下:

sh /www/server/panel/install/nginx.sh install 1.20

5)编译完成后,用命令:nginx -V  即可查看到模块已经编译完成,注意这里的“v”是大写。



文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复:表情:
评论列表 (暂无评论,909人围观)

还没有评论,来说两句吧...

目录[+]

取消
微信二维码
微信二维码
支付宝二维码