【问题标题】:nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_sizenginx: [emerg] 无法构建 server_names_hash,你应该增加 server_names_hash_bucket_size
【发布时间】:2012-12-03 11:21:06
【问题描述】:

我正在设置新服务器。我选择的 http-Server 是 NGINX。我想将域audi-freunde-einbeck.de 添加为虚拟主机。我那里已经有 2 个其他域并且工作正常,但是当我尝试添加上述域并启动服务器时,它给了我Job failed. See system journal and 'systemctl status' for details. 我认为这是因为破折号,所以我尝试了带有和不带有连字符的各种其他域,但没有运气。同样的错误。是什么原因造成的?我也试过重启,我真的很茫然。任何帮助将不胜感激。

我玩了一会儿发现,当我只放入一个域时,它就可以工作。但是当我放入另一个域时,它就停止了。这是状态的输出:

[root@netzmelone nginx]# systemctl status nginx
nginx.service - A high performance web server and a reverse proxy server
      Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
      Active: failed (Result: exit-code) since Sun, 16 Dec 2012 11:38:08 +0000; 7s ago
     Process: 14239 ExecStop=/usr/sbin/nginx -g pid /run/nginx.pid; -s quit (code=exited, status=1/FAILURE)
     Process: 14232 ExecStart=/usr/sbin/nginx -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=0/SUCCESS)
     Process: 14242 ExecStartPre=/usr/sbin/nginx -t -q -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=1/FAILURE)
    Main PID: 14234 (code=exited, status=0/SUCCESS)
      CGroup: name=systemd:/system/nginx.service

Dec 16 11:38:08 netzmelone nginx[14242]: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
Dec 16 11:38:08 netzmelone nginx[14242]: nginx: configuration file /etc/nginx/nginx.conf test failed

【问题讨论】:

  • 你看过日志吗?
  • 我应该查看哪些日志?
  • 或者您可以在 server_name 中简单地使用您的域名。

标签: nginx webserver


【解决方案1】:

这很可能是因为域名过长。您可以通过添加来解决此问题

server_names_hash_bucket_size  64;

http 块的顶部(可能位于/etc/nginx/nginx.conf)。我从 nginx 文档中引用了出现此错误时该怎么做:In this case, the directive value should be increased to the next power of two。所以在你的情况下它应该变成 64。

如果您仍然遇到相同的错误,请尝试增加到 128 甚至更多。

参考:http://nginx.org/en/docs/http/server_names.html#optimization

【讨论】:

  • 有趣的是,即使我的特定 Nginx 错误消息指示我使用 32,我也不得不使用 64。
  • 与@Ryan 相同——NGINX 告诉我使用 64,但我需要 128 才能使其工作。
  • @jerzy 显然遗漏了一些平凡的早晨细节。
  • @jerzy 尽管该错误消息的措辞有点模棱两可,但它可能被设计为包含 当前值,而不是指示您使用什么值.
  • @jerzy 在配置 ec2 实例时如何在用户数据中增加这一点。所以基本上在 bash 脚本中?
【解决方案2】:
  • 以写权限打开/etc/nginx/nginx.conf
  • 取消注释或添加server_names_hash_bucket_size 64;
  • 重启nginxsudo service nginx restart

如果错误仍然存​​在:

  • 在步骤 128、256、512 等中增加 server_names_hash_bucket_size(每次增加 2 的幂)。例如。 server_names_hash_bucket_size 128;
  • 每次重启nginx,直到错误消失(无论你设置什么值,错误总是一样的)

【讨论】:

  • 感谢您提出增量方法的建议。 nginx的消息一直说设置为64:S
  • 谢谢,通过递增,一切顺利!!
【解决方案3】:

这听起来可能有点随机,但它可能会帮助像我这样的 nginx 新手。
当我在server_name 行上留下; 时出现此错误。

有:

server_name    www.mydomain.com  
access_log     /var/log/nginx/www.mydomain.com; 

修复:

server_name    www.mydomain.com;  
access_log     /var/log/nginx/www.mydomain.com; 

nginx 配置文件中的所有指令都必须以 ; 结尾
我经常在保存/上传文件之前突出显示文件中的;s,作为编辑后的最终检查。

【讨论】:

    【解决方案4】:

    我就是这样解决的:

    cd /etc/nginx/
    
    sudo nano nginx.conf
    
    • --取消注释或添加 server_names_hash_bucket_size 64 --
    • --增加 server_names_hash_bucket_size "164" --
    cd /etc/nginx/sites-available/
    
    sudo nginx -t
    
    
    • 如果一切正常
    sudo service nginx restart
    

    【讨论】:

      猜你喜欢
      • 2017-09-19
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      • 2021-06-26
      相关资源
      最近更新 更多