nginx:[emerg]はserver_names_hashをビルドできませんでした。server_names_hash_bucket_sizeを増やす必要があります


107

新しいサーバーをセットアップ中です。私が選んだhtt​​p-ServerはNGINXです。ドメインaudi-freunde-einbeck.deを仮想ホストとして追加したい。すでに2つのドメインがあり、正常に動作しますが、上記のドメインを追加してサーバーを起動しようとするJob failed. See system journal and 'systemctl status' for details. と、ダッシュが原因だと思ったので、ハイフンの有無にかかわらず、他のさまざまなドメインを試しました、しかし運がない。同じエラー。何が原因でしょうか?私も再起動を試みました、私はここで本当に途方に暮れています。どんな助けでも大歓迎です。

少し遊んでみたところ、ドメインを1つだけ入れれば、それが機能することがわかりました。しかし、別のドメインを入れると停止します。ステータスの出力は次のとおりです。

[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

ログを見たことがありますか?
willglynn 2012

どのログを見る必要がありますか?
oengelha 2012

または、server_name内で単にドメイン名を使用することもできます。
サラン

回答:


219

これは、ドメイン名が長いために発生している可能性があります。追加することでこれを修正できます

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


8
興味深いことに、特定のNginxエラーメッセージで32を使用するように指示されていたにもかかわらず、64を使用する必要がありました。–
Ryan

46
@Ryanと同じ-NGINXは64を使用するように指示していましたが、それを機能させるには128が必要でした。
ジャージー2016

@jerzyどうやら、いくつかのありふれた朝の詳細が見落とされていました。
Erutan409 2017年

4
@jerzyそのエラーメッセージの少しあいまいな表現は別のことを示唆していますが、使用する値を指示するのではなく、現在の値を含めるように設計されている可能性があります。
anothernode

@jerzy ec2インスタンスをプロビジョニングするときに、userdataでこれを増やすにはどうすればよいでしょうか。だから基本的にbashスクリプトで?
シャン

31
  • 開いた /etc/nginx/nginx.conf書き込み権限で
  • コメントを外すか追加する server_names_hash_bucket_size 64;
  • nginxを再起動します sudo service nginx restart

それでもエラーが続く場合:

  • 増加する server_names_hash_bucket_sizeステップ128、256、512などでします(毎回2の累乗で増加します)。例えば。server_names_hash_bucket_size 128;
  • エラーがなくなるまで毎回nginxを再起動します(すでに設定した値に関係なく、エラーは常に同じです)

インクリメンタルアプローチを提案していただきありがとうございます。nginxののメッセージは、それを設定言い続けた64:S
YBL

6

これはおそらく少しランダムに聞こえますが、私のようなnginxnewbに役立つ可能性があります。回線を
中断したときにこのエラーが発生し;ました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を;
強調表示することが多いで終わる必要があり;ます。


3

これが私が解決した方法です:

cd /etc/nginx/

sudo nano nginx.conf
  • --server_names_hash_bucket_size64のコメントを解除または追加します-
  • --server_names_hash_bucket_size "164"を増やします-
cd /etc/nginx/sites-available/

sudo nginx -t

  • すべてが大丈夫なら
sudo service nginx restart
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.