nginx의 기본 호스트를 어떻게 설정합니까?


11

내 nginx 설치를 위해 기본 호스트를 설정하는 방법을 알아 내려고합니다. nginx Wiki 에서이 기사를 찾았습니다.

http://wiki.nginx.org/NginxVirtualHostExample#A_Default_Catchall_Virtual_Host

불행히도 이것은 작동하지 않습니다. 다시 시작한 후 이것을 얻습니다.

Restarting nginx: nginx: [emerg] unknown directive "http" in /etc/nginx/sites-enabled/catchall:1
nginx: configuration file /etc/nginx/nginx.conf test failed

http 지시문을 제거한 후 나는 이것을 얻는다 :

Restarting nginx: nginx: [emerg] unknown log format "main" in /etc/nginx/sites-enabled/catchall:7
nginx: configuration file /etc/nginx/nginx.conf test failed

나는 공식 nginx PPA를 사용하는 Ubuntu 10.04.3에 있습니다. nginx 버전 1.0.9가 실행 중입니다.

답변:


16

Nginx 구성은 일련의 중첩 된 블록을 기반으로합니다. http 블록은 하나만 있어야합니다. 이것은 일반적으로 /etc/nginx/nginx.conf에 정의되어 있으며 포함 된 모든 파일 (예 : 사용 가능한 사이트)이이 http 블록에 포함됩니다. 기본 / 캐치 전체 호스트를 설정하려면 기본 호스트에 대한 서버 블록 섹션 만 필요합니다. 청취 지시문에 'default'를 추가하면됩니다. 또한 실제 이름과 일치하지 않는 server_name (일반적으로 밑줄 ( "_"))을 사용하는 것이 일반적이지만 다른 문자도 사용할 수 있습니다. 기본 매개 변수를 생략하면 첫 번째 서버 블록이 기본값으로 처리됩니다. (자세한 내용은 nginx의 server_names 안내서를 참조하십시오)

기본 (이 문맥에서 '원본') nginx 구성에는 구성 할 수있는 nginx.conf의 기본 (catch-all) 서버 블록이 포함될 수 있습니다.

두 번째 오류는 nginx.conf에 'main'이 정의되어 있는지 확인하십시오 (줄은 'log_format main ...'로 시작해야하며 물론 괄호를 확인해야합니다.) 'access_log'줄을 완전히 생략 할 수 있습니다. 기본 서버에 대한 요청을 기록하지 않으려는 경우 (또는 새 형식을 정의하여 형식을 변경할 수 있음)


그것은 빠르다. 감사. 내일 조금만 자고 나서 내일 시험 해보자 ;-).
Ulf Klose

server_name으로 _를 사용하면 서버의 "기본"에 추가되지 않습니다 {}. 이는 일반적으로 catchall이 다른 서버 블록과 충돌하지 않도록 유지하는 데 사용되므로, listen 지시문의 기본 플래그에 대한 '재정의'가 없습니다. 서버를 기본값으로 명시 적으로 표시하는 것은 유일합니다. 여전히 +1
kolbyjack

@kolbyjack-수정 해 주셔서 감사합니다-내 답변에서 수정하겠습니다.
cyberx86

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.