web-dev-qa-db-fra.com

nginx: [Emerg] n'a pas pu construire le server_names_hash, vous devez augmenter server_names_hash_bucket_size

Je suis en train de configurer un nouveau serveur. Le serveur http de mon choix est NGINX. Je veux ajouter le domaine audi-freunde-einbeck.de en tant qu'hôte virtuel. J'ai déjà 2 autres domaines là-dedans et cela fonctionne très bien, mais lorsque j'essaie d'ajouter le domaine mentionné ci-dessus et de démarrer le serveur, il me donne Job failed. See system journal and 'systemctl status' for details. Je pensais que c'était à cause des tirets, alors j'ai essayé juste plusieurs autres domaines avec et sans tirets, mais pas de chance. Même erreur. Qu'est-ce qui peut causer cela? J'ai aussi essayé de redémarrer, je suis vraiment perdu ici. Toute aide serait grandement appréciée.

J'ai joué un peu et découvert que, lorsque je ne mets qu'un seul domaine, cela fonctionne. Mais quand je mets un autre domaine, ça s'arrête. Voici la sortie en statut:

[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
59
oengelha

Cela se produit très probablement en raison du nom de domaine long. Vous pouvez résoudre ce problème en ajoutant

server_names_hash_bucket_size  64;

en haut de votre bloc http (probablement situé dans /etc/nginx/nginx.conf). Je cite la documentation de nginx que faire lorsque cette erreur apparaît: In this case, the directive value should be increased to the next power of two. Donc, dans votre cas, cela devrait devenir 64.

Référence: http://nginx.org/en/docs/http/server_names.html#optimization

115
jagsler
  • ouvert /etc/nginx/nginx.conf avec des droits d'écriture
  • décommenter ou ajouter server_names_hash_bucket_size 64;
  • redémarrer nginx Sudo service nginx restart

Si l'erreur persiste:

  • augmenter server_names_hash_bucket_size aux étapes 128, 256, 512, etc. (en augmentant chaque fois d'une puissance de 2). par exemple. server_names_hash_bucket_size 128;
  • redémarrez le nginx à chaque fois jusqu'à ce que l'erreur disparaisse (l'erreur sera toujours la même quelle que soit la valeur que vous avez déjà définie)
8
Raghavendra

Cela semble peut-être un peu aléatoire, mais cela pourrait aider un nouveau nginx comme moi.
J'ai eu cette erreur lorsque j'ai laissé un ; sur le server_name ligne.

eu:

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

réparer:

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

Toutes les directives dans les fichiers de configuration nginx doivent se terminer par un ;
Je souligne souvent ;s dans mon fichier avant l'enregistrement/le téléchargement comme vérification finale après la modification.

1
SherylHohman