nginx:[emerg]无法构建server_names_hash,你应该增加server_names_hash_bucket_size

oen*_*lha 65 webserver nginx

我正在设置新服务器.我选择的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
Run Code Online (Sandbox Code Playgroud)

jag*_*ler 130

由于域名较长,很可能会发生这种情况.您可以通过添加来解决此问题

server_names_hash_bucket_size  64;
Run Code Online (Sandbox Code Playgroud)

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

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

  • 和@Ryan一样 - NGINX告诉我使用64,但我需要128才能使它工作. (24认同)
  • 有趣的是,我不得不使用64,即使我的特定Nginx错误消息指示我使用32. (4认同)
  • @jerzy即使该错误消息的措词有些含糊,但暗示了其他含义,但它可能被设计为包含“当前值”,而不是指示您使用什么值。 (3认同)

Rag*_*dra 9

  • /etc/nginx/nginx.conf以写权限打开
  • 取消注释或添加 server_names_hash_bucket_size 64;
  • 重新启动nginx sudo service nginx restart

如果错误仍然存​​在:

  • 增加server_names_hash_bucket_size在步骤128,256,512,等等(通过每次2的功率增加)。例如。server_names_hash_bucket_size 128;
  • 每次重新启动Nginx直到错误消失(无论您已经设置了什么值,错误始终是相同的)

  • 感谢您建议增量方法。nginx 的消息一直说将其设置为“64”:S (2认同)

She*_*man 5

这听起来可能有点随意,但它可能对像我这样的 nginx 新手有所帮助。
当我离开一个我得到这个错误;server_name行。

有:

server_name    www.mydomain.com  
access_log     /var/log/nginx/www.mydomain.com; 
Run Code Online (Sandbox Code Playgroud)

使固定:

server_name    www.mydomain.com;  
access_log     /var/log/nginx/www.mydomain.com; 
Run Code Online (Sandbox Code Playgroud)

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


Fla*_*ira 5

我是这样解决的:

cd /etc/nginx/

sudo nano nginx.conf
Run Code Online (Sandbox Code Playgroud)
  • -- 取消注释或添加 server_names_hash_bucket_size 64 --
  • --增加 server_names_hash_bucket_size "164" --
cd /etc/nginx/sites-available/

sudo nginx -t

Run Code Online (Sandbox Code Playgroud)
  • 如果一切都好
sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)