nginx: [emerg] konnte den server_names_hash nicht erstellen, Sie sollten server_names_hash_bucket_size erhöhen


100

Ich bin gerade dabei, einen neuen Server einzurichten. Der http-Server meiner Wahl ist NGINX. Ich möchte die Domain audi-freunde-einbeck.deals virtuellen Host hinzufügen . Ich habe bereits 2 andere Domains darin und es funktioniert einwandfrei, aber wenn ich versuche, die oben genannte Domain hinzuzufügen und den Server zu starten, Job failed. See system journal and 'systemctl status' for details. dachte ich, dass dies an den Bindestrichen liegt, also habe ich nur verschiedene andere Domains mit und ohne Bindestriche ausprobiert , aber kein Glück. Gleicher Fehler. Was könnte das verursachen? Ich habe auch versucht, neu zu starten, ich bin hier wirklich ratlos. Jede Hilfe wäre sehr dankbar.

Ich habe ein bisschen herumgespielt und herausgefunden, dass es funktioniert, wenn ich nur eine Domain einfüge. Aber wenn ich eine andere Domain einfüge, hört sie auf. Hier ist die Ausgabe im Status:

[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

Hast du dir irgendwelche Protokolle angesehen?
Willglynn

Welche Protokolle sollte ich mir ansehen?
Oengelha

oder Sie können einfach Ihren Domainnamen innerhalb Ihres Servernamens verwenden.
Saran

Antworten:


203

Dies geschieht höchstwahrscheinlich aufgrund des langen Domainnamens. Sie können dies beheben, indem Sie hinzufügen

server_names_hash_bucket_size  64;

am oberen Rand Ihres httpBlocks (wahrscheinlich in /etc/nginx/nginx.conf). Ich zitiere aus der Nginx-Dokumentation, was zu tun ist, wenn dieser Fehler auftritt : In this case, the directive value should be increased to the next power of two. In Ihrem Fall sollte es also 64 werden.

Wenn Sie immer noch den gleichen Fehler erhalten, versuchen Sie, ihn auf 128 und höher zu erhöhen.

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


8
Interessanterweise musste ich 64 verwenden, obwohl meine spezielle Nginx-Fehlermeldung mich anwies, 32 zu verwenden.
Ryan

44
Das gleiche wie bei @Ryan - NGINX sagte mir, ich solle 64 verwenden, aber ich brauchte 128, damit es funktioniert.
Jerzy

@ jerzy Anscheinend wurden einige weltliche Details am Morgen übersehen.
Erutan409

4
@jerzy Obwohl der etwas mehrdeutige Wortlaut dieser Fehlermeldung etwas anderes nahelegt, wurde er wahrscheinlich so konzipiert, dass er den aktuellen Wert enthält und Sie nicht anweist, welchen Wert Sie verwenden sollen.
Anothernode

@jerzy Wie würde man vorgehen, um die Benutzerdaten bei der Bereitstellung einer ec2-Instanz zu erhöhen? Also im Grunde in Bash-Skript?
Shan

29
  • Öffnen Sie /etc/nginx/nginx.confmit Schreibrechten
  • auskommentieren oder hinzufügen server_names_hash_bucket_size 64;
  • Starten Sie Nginx neu sudo service nginx restart

Wenn der Fehler weiterhin besteht:

  • Erhöhen Sie die server_names_hash_bucket_sizeSchritte 128, 256, 512 usw. (jedes Mal um eine Potenz von 2). z.B.server_names_hash_bucket_size 128;
  • Starten Sie den Nginx jedes Mal neu, bis der Fehler behoben ist (der Fehler ist immer der gleiche, unabhängig davon, welchen Wert Sie bereits festgelegt haben).

Vielen Dank, dass Sie den inkrementellen Ansatz vorgeschlagen haben. In der Nachricht von nginx hieß es immer wieder 64: S
ybl

5

Das klingt vielleicht ein bisschen zufällig, aber es könnte einem Nginx-Neuling wie mir helfen.
Ich habe diesen Fehler erhalten, als ich a ;in der server_nameLeitung aufgehört habe.

hätten:

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

Fix:

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

Alle Anweisungen in Nginx-Konfigurationsdateien müssen mit einem Punkt enden, den ;
ich häufig ;in meiner Datei vor dem Speichern / Hochladen als letzte Überprüfung nach der Bearbeitung hervorhole .


2

So habe ich gelöst:

cd /etc/nginx/

sudo nano nginx.conf
  • --uncomment oder füge server_names_hash_bucket_size hinzu 64 -
  • - Erhöhen Sie server_names_hash_bucket_size "164" -
cd /etc/nginx/sites-available/

sudo nginx -t

  • Wenn alles in Ordnung ist
sudo service nginx restart
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.