web-dev-qa-db-ja.com

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

新しいサーバーをセットアップしています。私が選択したhttp-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
59
oengelha

これは、ドメイン名が長いために発生する可能性が最も高くなります。これを修正するには次を追加します

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になるはずです。

リファレンス: http://nginx.org/en/docs/http/server_names.html#optimization

115
jagsler
  • /etc/nginx/nginx.confを書き込み権限で開きます
  • コメントを外すか、server_names_hash_bucket_size 64;を追加します
  • nginx Sudo service nginx restartを再起動します

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

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

これはおそらく少しランダムに聞こえますが、それは私のようなnginx newbを助けるかもしれません。
;行の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を強調表示することがよくあります。

1
SherylHohman