CentOS7+OpenResty环境下Nginx共享内存区大小冲突问题求助
这个错误的核心原因很明确:你在Nginx配置中重复声明了名为limit的共享内存zone,且两次指定的内存大小不一致(一次是10MB,一次是50MB),Nginx不允许这种冲突的配置存在。
下面是具体的修复步骤,你已经打开了vi编辑器,可以直接跟着操作:
搜索所有冲突的zone声明
在vi的编辑模式下,按下/键,输入zone=limit然后回车,这会定位到第一个包含该关键词的行。按n键可以跳转到下一个匹配项,N键跳回上一个,以此遍历所有相关配置行。你会找到至少两行类似这样的配置(可能在主配置
nginx.conf里,也可能在include引入的子配置文件中):limit_req_zone $binary_remote_addr zone=limit:10m rate=10r/s;
limit_req_zone $binary_remote_addr zone=limit:50m rate=10r/s;统一zone配置
你有两种解决方式:- 方案一(推荐):保留其中一个声明,删除或注释掉另一个。比如如果你想使用50MB的内存,就在10MB那行的开头加
#注释掉,或者直接删除该行。 - 方案二:如果确实需要两个不同的限流规则,把其中一个zone的名字改掉(比如改成
limit_user或limit_ip),同时确保对应的限流引用也同步修改。
- 方案一(推荐):保留其中一个声明,删除或注释掉另一个。比如如果你想使用50MB的内存,就在10MB那行的开头加
验证配置并重启
修改完成后,执行配置测试命令确认修复:/usr/local/openresty/nginx/sbin/nginx -t当看到
nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful的提示,就说明配置没问题了。最后重启Nginx让修改生效:/usr/local/openresty/nginx/sbin/nginx -s reload
⚠️ 注意:别忘了检查nginx.conf中通过include指令引入的其他配置文件(比如conf.d/目录下的.conf文件),这些地方也可能存在重复的zone声明。
内容的提问来源于stack exchange,提问作者codingbitmit

