Nginx에 구성 파일이 순서대로 포함되어 있지 않습니까?


12

Nginx에 구성 파일이 포함 된 순서는 고정적이거나 무작위입니까? 아파치는 명시 적으로 와일드 카드 문자가 알파벳 순서로 확장 된다고 명시하고있다 . Nginx에서는 이것이 적용되지 않는 것으로 보이며 매뉴얼은 그것에 대해 아무 것도 말하지 않습니다 .

내 설정에서 20_example.com이전 00_default에 포함되었으므로 로그 형식과 같은 공유 지시문을 정의하려는 목적을 상실합니다.

답변:



3

AD7six의 답변은 전적으로 정확하지 않습니다. 순서는 두 서버 블록이 동일한 "특성"을 갖는 경우에도 중요합니다 (예 : 둘 다 server_name에서 정규식을 사용하고 수신 요청이 둘 다 일치하는 경우).

server {
    server_name ~^(www\.)?(?<domain>foo\.com|bar\.com|baz\.com)$;
    ...
}

server {
    server_name ~^(www\.)?(?<domain>.+)$;
    ...
}

이 시나리오에서 두 서버 블록은 순서를 보장 할 수 없기 때문에 두 파일에 분산 될 수 없습니다.


1

OP가 log_format 순서를 지적함에 따라 사용자 정의 log_formats의 경우 두 가지 유형의 파일, log_formats가있는 일부 파일, 해당 log_formats를 사용하는 서버 블록이있는 일부 파일에 배치하면 결과는 다음과 같습니다. 반복 불가능한 구성.

우리가 손으로 만든 nginx 농장을 꼭두각시로 처음 옮길 때, 동일한 하드웨어 / 설정에서 nginx 설치가 처음부터 실패하기 시작했습니다 ./etc/nginx/* (- r) md5match와 동일한 이진으로 다른 결과를 생성합니다 (하나는 유효하지 않은 log_format 오류이고 다른 하나는 작동합니다). 우리는 log_format과 같은 일부 지시문에 대해 순서가 매우 중요하다는 것을 배웠습니다 .

conf.d / *에서 서버 블록 생성을 conf.d / * 다음에 포함 된 다른 폴더로 이동하여 문제를 해결했습니다.

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