nginx: [acil] server_names_hash'i oluşturamadı, server_names_hash_bucket_size'yi artırmalısınız


102

Yeni bir sunucu kurma sürecindeyim. Tercih ettiğim http Sunucusu NGINX. audi-freunde-einbeck.deAlanı sanal konak olarak eklemek istiyorum . Zaten orada 2 alanım daha var ve iyi çalışıyor, ancak yukarıda belirtilen etki alanını eklemeye ve sunucuyu başlatmaya çalıştığımda bana Job failed. See system journal and 'systemctl status' for details. bunun kısa çizgilerden kaynaklandığını düşündüm, bu yüzden kısa çizgi içeren ve içermeyen çeşitli diğer alanları denedim. ama şans yok. Aynı hata. buna ne sebep olabilir? Ayrıca yeniden başlatmayı denedim, burada gerçekten bir kaybım var. Herhangi bir yardım çok takdir edilecektir.

Biraz oynadım ve sadece bir alan adı koyduğumda işe yaradığını öğrendim. Ancak başka bir alan adı koyduğumda durur. Durumdaki çıktı:

[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

Herhangi bir günlüğe baktınız mı?
willglynn

Hangi günlüklere bakmalıyım?
oengelha

ya da sunucu_adınızın içinde sadece alan adınızı kullanabilirsiniz.
saran

Yanıtlar:


207

Bu, büyük olasılıkla uzun alan adı nedeniyle oluyor. Bunu ekleyerek düzeltebilirsiniz

server_names_hash_bucket_size  64;

httpbloğunuzun üst kısmında (muhtemelen içinde bulunur /etc/nginx/nginx.conf). Bu hata göründüğünde ne yapacağını nginx belgelerine alıntı: In this case, the directive value should be increased to the next power of two. Yani sizin durumunuzda 64 olmalı.

Hala aynı hatayı alıyorsanız, 128'e ve daha yükseğe çıkarmayı deneyin.

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


8
İlginçtir, ben 32. kullanmak benim özellikle Nginx hata mesajı bana talimat olsa bile 64 kullanmak zorunda kaldı
Ryan

44
@Ryan ile aynı - NGINX bana 64 kullanmamı söylüyordu, ancak çalışması için 128'e ihtiyacım vardı.
jerzy

@jerzy Bazı sıradan sabah ayrıntıları, görünüşe göre kaçırılmış.
Erutan409

4
@jerzy Bu hata mesajının biraz muğlak ifadesi aksini ima etse de, muhtemelen size hangi değeri kullanacağınızı öğretmek için değil , mevcut değeri içerecek şekilde tasarlandı .
anothernode

@jerzy, bir ec2 örneğini sağlarken kullanıcı verilerinde bunu nasıl artırabilir? temelde bash betiğinde?
shan

29
  • açmak /etc/nginx/nginx.confyazma ayrıcalığı
  • uncomment or add server_names_hash_bucket_size 64;
  • nginx'i yeniden başlat sudo service nginx restart

Hata devam ederse:

  • server_names_hash_bucket_size128, 256, 512 ve benzeri adımlarda artış (her seferinde 2 güç artar). Örneğin.server_names_hash_bucket_size 128;
  • Hata giderilene kadar her seferinde nginx'i yeniden başlatın (daha önce ayarladığınız değer ne olursa olsun hata her zaman aynı olacaktır)

artımlı yaklaşımı önerdiğiniz için teşekkürler. nginx'in mesajı şunu söylemeye devam etti 64: S
ybl

5

Bu belki biraz rastgele gelebilir, ancak benim gibi bir nginx newb'ye yardımcı olabilir. Hat üzerinde
bıraktığımda bu hatayı aldım . ;server_name

vardı:

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

düzeltme:

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

Nginx yapılandırma dosyalarındaki tüm yönergeler, düzenlemeden sonra son bir kontrol olarak kaydetmeden / yüklemeden önce dosyamda ;
sık sık "’ ;leri vurguluyorum " ile bitmelidir .


2

Ben böyle çözdüm:

cd /etc/nginx/

sudo nano nginx.conf
  • --uncomment veya server_names_hash_bucket_size 64 ekle -
  • --increase server_names_hash_bucket_size "164" -
cd /etc/nginx/sites-available/

sudo nginx -t

  • her şey yolundaysa
sudo service nginx restart
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.