电影中心 精品软件 联系我们

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Close
查看: 697|回复: 0

解决宝塔面板提示Nginx配置规则错误:unknown directive “lua_shared_dict”

[复制链接]
发表于 2022-10-5 01:09:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
重启nginx的话会提示如下错误:
- |! D- Z/ [) h0 e
  m- A( q' g% O) {9 T* R
  1. nginx: [emerg] unknown directive "lua_shared_dict" in /www/server/panel/vhost/nginx/total.conf:10 V5 ~1 P, |* Q7 v2 C
  2. nginx: configuration file /www/server/nginx/conf/nginx.conf test failed
复制代码

, o% f8 O& h" N* H9 l0 Z
9 T: T4 Y+ D- l! B2 R( U1、错误提示9 ^- l# I' k" p# q$ D
这个bug应该是仅有新安装宝塔最新版本7.9.2,才有可能会碰到。具体的bug就是安装宝塔防火墙不论是专业版防火墙还是免费防火墙以及安装网站监控报表都会提示,文章开头的错误。顺便放一张图:
8 A' R7 G& z5 \$ s
- }* L. o& E1 J# B/ N

解决宝塔面板提示Nginx配置规则错误:unknown directive “lua_shared_dict”

解决宝塔面板提示Nginx配置规则错误:unknown directive “lua_shared_dict”

  [; j" @8 O  G! _1 F4 u6 F$ f3 Y2 ]% t' |
2、查找原因4 a- j- b3 |; u1 M2 _5 ~( \
1)官方给我出的解决方案如下,当然这个方法可能是有用的。, e, h4 P6 f  Z: C$ M6 V" i: V+ W

  R2 q9 S! b" \9 Y" L, a2 e/ q7 q
报错原因是:系统缺少luajit组件,导致nginx使用异常;7 ], e% `$ @/ B6 B% r( x4 l
解决方法:卸载nginx防火墙/nginx免费防火墙,网站加速(这些插件没装的话可忽略此步骤)卸载当前版本的nginx,使用编译模式安装一遍nginx1.20,编译安装会自动安装luajit组件;' s0 M# ?$ R" p* h4 C
装好nginx后重装前面卸载的那几个插件即可正常使用。

& ]$ T+ r4 R0 k; U6 k& R2)问题的症结所在
, I- T  g* L" T7 ^& G* O: ^, G
; D: _4 e+ z8 o4 I# j- q' o) G# ]# l这个问题的具体原因是缺少两个nginx模块:ngx_devel_kit和lua_nginx_module,我们只要把这两个模块编译到nginx里面就可以解决。不过你最好用命令:nginx -V 来检查一下你的nginx扩展。在测试环境用这个命令来检查发现确实是少了这两个模块。  y( ]9 e. I+ X# P1 U

* s* e# x+ {! e+ {% g. z3、解决问题" J; m1 a5 C* R6 a% W
既然找到了症结所在,那么我们只要开始编译安装这两个模块即可,具体的方法如下:  j) U2 {% m- {3 f( R$ N9 j
: T# }: h) o! W% n: a2 E6 I
1)用命令来查看自己的nginx版本号,这一这里的v是小写,命令如下:
. O) a5 K& W# j( S$ s5 |% r9 Z6 ?
  1. nginx -v
复制代码

, J/ \% K6 _* ?$ R2)到/www/server/nginx/src这个目录下看看ngx_devel_kit和lua_nginx_module这两个模块在不在,宝塔默认是编译好的,也就是7.9.2太奇葩。一般都是有的,如图:
0 j& E5 U/ |/ b: J8 A3 c3 p6 V7 o7 ^1 i7 K! K* s7 S* |. j

解决宝塔面板提示Nginx配置规则错误:unknown directive “lua_shared_dict”

解决宝塔面板提示Nginx配置规则错误:unknown directive “lua_shared_dict”

9 F" J7 b7 v9 d' F5 p' z- A: c8 U1 z, Z& Z) h4 _
3)修改nginx.sh
8 ^' d) ?6 Y/ E$ d
9 k* @! P; J4 h" e# E宝塔面板找到路径:/www/server/panel/install找到文件nginx.sh 打开开始编辑。大概在278行,我们添加 --add-module=srclib/ngx_devel_kit --add-module=srclib/lua_nginx_module 不会添加看代码,标注下划线的地方就是我们要添加的2个模块:
2 v, e4 i5 ]. S7 Q* A. I8 A1 _: S# A! j* F4 E- ?
./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}
$ `! h$ S8 R; s* c4 T+ J
4)因为默认是已经有这两个模块了,所以我们直接编译即可,我们回到ssh客户端使用命令开始编译,根据自己的版本,因为测试环境这台服务器安装的版本是nginx1.20.2所以用编译命令如下:
* ~8 a# t6 l+ p+ A/ o& o" i* M. P8 h. v  B$ M+ H# ^# y$ v
  1. sh /www/server/panel/install/nginx.sh install 1.20
复制代码

0 E3 ~$ W$ C7 W9 b  X8 b- c5)编译完成后,用命令:nginx -V 即可查看到模块已经编译完成,注意这里的“v”是大写。
4 l# `% x6 G, L$ ^* g/ C2 R$ z) W6 F8 K! X3 u
4、最后
' f1 Y. t3 U) o- ~. h3 }' u" ?8 B这两个模块编译完成之后,我们再次测试后,即可正常使用。
" n! i& y6 x7 B- n% q3 P  O/ Y0 Z3 s; v; D- q+ K
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|帮助|古城IT技术联盟 ( 鲁ICP备06030014号 )

GMT+8, 2024-5-6 11:02 , Processed in 0.870718 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表