156

我正在设置新服务器。我选择的 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
4

4 回答 4

310

由于域名过长,这很可能发生。您可以通过添加来解决此问题

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

于 2012-12-16T23:23:32.277 回答
50
  • /etc/nginx/nginx.conf以写权限打开
  • 取消注释或添加server_names_hash_bucket_size 64;
  • 重启 nginxsudo service nginx restart

如果错误仍然存​​在:

  • 增加server_names_hash_bucket_size步骤 128、256、512 等(每次增加 2 的幂)。例如。server_names_hash_bucket_size 128;
  • 每次重新启动 nginx 直到错误消失(无论您已经设置了什么值,错误总是相同的)
于 2018-06-12T09:35:06.777 回答
7

这听起来可能有点随机,但它可能会帮助像我这样的 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 结尾,然后保存/上传作为编辑后的最终检查。

(为了突出显示,我使用Find All:);

于 2018-11-16T06:39:57.967 回答
6

我就是这样解决的:

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
于 2020-05-24T15:53:39.703 回答