nginx: [emerg] too long parameter

nginx错误提示:nginx: [emerg] too long parameter …

事件背景:

站点添加附加域名,字符数大约有4000多个字符,100多个域名。将此些域名添加到nginx/vhost/站点.conf的域名项后,重启nginx时,就出现了该错误。

原因:

nginx的核心文件限死了 NGX_CONF_BUFFER参数的值为4K,该参数决定了.conf配置文档不能大于4K,如果超过则无法读取,便出现该提示。

常见案例:

添加大量域名 / 添加非常长的规则指令如伪静态规则或301规则 / 其它增加的参数项

解决方案:

方案1:

修改核心文件src/core/ngx_conf_file.c,设置为例如8K,
#define NGX_CONF_BUFFER  8192
并重新编译安装nginx

方案2:

对于域名过多或字符过长,可通过使用多个.conf将域名分开放置。若是伪静态规则过长,则可以使用include引入外部文件,以减小单文档文件的大小。

 

点赞

发表评论