nginx : [emerg]가 server_names_hash를 빌드 할 수 없습니다. server_names_hash_bucket_size를 늘려야합니다.


110

새 서버를 설정하는 중입니다. 내가 선택한 http-Server는 NGINX입니다. 도메인 audi-freunde-einbeck.de을 가상 호스트로 추가하고 싶습니다 . 이미 2 개의 다른 도메인이 있고 잘 작동하지만 위에서 언급 한 도메인을 추가하고 서버를 시작 Job failed. See system journal and 'systemctl status' for details. 하려고하면 대시 때문인 줄 알았 기 때문에 하이픈이 있거나없는 다양한 다른 도메인을 시도했습니다. ,하지만 운이 없습니다. 같은 오류. 원인이 무엇일까요? 재부팅도 시도했는데 여기에서 정말 헤매고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다.

나는 약간 놀았고, 하나의 도메인 만 넣으면 작동한다는 것을 알았습니다. 그러나 다른 도메인을 넣으면 중지됩니다. 다음은 상태의 출력입니다.

[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

또는 단순히 server_name 안에 도메인 이름을 사용할 수 있습니다.
saran

답변:


223

이것은 긴 도메인 이름 때문에 발생할 가능성이 큽니다. 다음을 추가하여 수정할 수 있습니다.

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
흥미롭게도, 나는 32 이용할 수 있도록 특정 Nginx에 오류 메시지가 나에게 지시에도 불구하고 64을 사용했다
라이언

46
@Ryan과 동일-NGINX는 64를 사용하라고 말했지만 작동하려면 128이 필요했습니다.
jerzy

@jerzy 분명히 평범한 아침 세부 사항이 누락되었습니다.
Erutan409

4
@jerzy 그 오류 메시지 종류의 약간 모호한 표현이 그렇지 않다는 것을 암시하지만, 아마도 현재 값 을 포함하도록 설계되었으며 사용할 값을 지시하기위한 것이 아닙니다.
anothernode

@jerzy ec2 인스턴스를 프로비저닝 할 때 userdata에서 이것을 늘리는 방법은 무엇입니까? 그래서 기본적으로 bash 스크립트에서?
shan

32
  • /etc/nginx/nginx.conf쓰기 권한으로 열기
  • 주석 해제 또는 추가 server_names_hash_bucket_size 64;
  • nginx 다시 시작 sudo service nginx restart

오류가 계속되는 경우 :

  • server_names_hash_bucket_size128, 256, 512 단계 등으로 증가 합니다 (매번 2의 거듭 제곱 씩 증가). 예.server_names_hash_bucket_size 128;
  • 오류가 사라질 때까지 nginx를 다시 시작합니다 (이미 설정 한 값에 관계없이 오류는 항상 동일합니다)

1
점진적 접근 방식을 제안 해 주셔서 감사합니다. nginx의 메시지는 계속해서 set it to 64: S
ybl

6

이것은 아마도 약간 무작위로 들리지만 저와 같은 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를 강조 표시로 끝나야합니다 .


3

이것이 내가 해결 한 방법입니다.

cd /etc/nginx/

sudo nano nginx.conf
  • -주석 제거 또는 server_names_hash_bucket_size 64 추가-
  • --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.