it-swarm-eu.dev

nginx: [emerg] non è stato possibile creare server_names_hash, è necessario aumentare server_names_hash_bucket_size

Sono in procinto di configurare un nuovo server. Il server http di mia scelta è NGINX. Voglio aggiungere il dominio audi-freunde-einbeck.de come host virtuale. Ho già altri 2 domini lì dentro e funziona bene, ma quando provo ad aggiungere il dominio sopra menzionato e avviare il server mi dà Job failed. See system journal and 'systemctl status' for details. Ho pensato che fosse a causa dei trattini, quindi ho provato solo vari altri domini con e senza trattini, ma senza fortuna. Stesso errore Che cosa potrebbe causare questo? Ho anche provato a riavviare, sono davvero in perdita qui. Qualsiasi aiuto sarebbe molto apprezzato.

Ho giocato un po 'e ho scoperto che, quando ho inserito solo un dominio, funziona. Ma quando inserisco un altro dominio, si ferma. Ecco l'output nello stato:

[[email protected] 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
59
oengelha

Molto probabilmente ciò accade a causa del lungo nome di dominio. È possibile risolvere questo problema aggiungendo

server_names_hash_bucket_size  64;

nella parte superiore del blocco http (probabilmente situato in /etc/nginx/nginx.conf). Cito dalla documentazione di nginx cosa fare quando appare questo errore: In this case, the directive value should be increased to the next power of two. Quindi nel tuo caso dovrebbe diventare 64.

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

115
jagsler
  • aperto /etc/nginx/nginx.conf con privilegi di scrittura
  • decommenta o aggiungi server_names_hash_bucket_size 64;
  • riavvia nginx Sudo service nginx restart

Se l'errore persiste ancora:

  • aumentare server_names_hash_bucket_size nei passaggi 128, 256, 512 e così via (aumentando di una potenza di 2 ogni volta). per esempio. server_names_hash_bucket_size 128;
  • riavvia nginx ogni volta fino alla scomparsa dell'errore (l'errore sarà sempre lo stesso, indipendentemente dal valore già impostato)
8
Raghavendra

Sembra forse un po 'casuale, ma potrebbe aiutare un newb nginx come me.
Ho ricevuto questo errore quando ho lasciato un ; sul server_name linea.

aveva:

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

risolvere:

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

Tutte le direttive nei file di configurazione di nginx devono terminare con un ;
Metto spesso in evidenza ;s nel mio file prima di salvare/caricare come controllo finale dopo la modifica.

1
SherylHohman