本人编译安装的nginx ,在使用 限速模块时候报错,如下:
ginx: [emerg] the size 10485760 of shared memory zone "addr" conflicts with already declared size 0 in /usr/local/nginx/conf/nginx.conf:118
使用yum安装的nginx 使用nginx内置限速模块时候,一切正常。
各位大神,有谁知道原因?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个错误信息表明你在尝试配置 Nginx 限速模块(可能是 ngx_http_limit_req_module)时,遇到了共享内存区域大小冲突的问题。具体来说,错误信息指出在你的 Nginx 配置文件/usr/local/nginx/conf/nginx.conf
的第118行,你为一个名为"addr"的共享内存区域指定了大小为10485760字节,但是这个区域之前已经被声明过且大小为0。
这个问题通常发生在以下几种情况:
重复配置:可能在同一配置文件中或者包含了多个配置文件的情况下,你不小心对同一个共享内存区域进行了两次不同的大小声明。检查你的配置文件,确保没有对同一区域名称进行多次不同大小的定义。
配置继承或包含问题:如果你的主配置文件通过include
指令引入了其他配置文件,可能是在这些被引入的文件中已经声明了一个相同名字但大小为0的共享内存区域。需要检查所有被包含的配置文件以确认这一点。
手动编译与预编译差异:你提到使用yum安装的Nginx一切正常,这可能是因为yum安装的Nginx版本与你手动编译安装的版本在默认配置或模块支持上有所不同。特别是如果在手动编译时未正确启用或配置限速模块,可能会导致此类问题。
解决方法:
检查并移除重复配置:仔细审查你的nginx.conf及其包含的所有配置文件,确保没有重复定义共享内存区域“addr”,或者调整为一致的大小。
明确模块配置:如果你在编译Nginx时自定义了模块,确保ngx_http_limit_req_module
正确启用,并且配置方式与编译选项相匹配。
对比编译选项:比较手动编译时使用的配置选项与yum安装的Nginx配置,确保所有必要的模块和配置都已正确设置。
清理并重新编译:如果以上步骤未能解决问题,考虑完全清理旧的编译结果,然后根据正确的配置重新编译和安装Nginx。
记得备份你的配置文件和数据,在进行修改前做好安全措施。