jpg / txt 일치 대신 testdir 일치가 선택되도록하려면 다음 위치를 사용하십시오.
location ^~ /testdir {
deny all;
return 404;
}
location ~* ^.+\.(jpg|txt)$ {
root /var/www/site;
}
귀하의 예에는 두 가지 유형의 위치가 있습니다. 와 사이에 location /testdir
물결표 ( ~
) 가 없으므로 접두사 위치 입니다.location
/testdir
location ~* ^.+\.(jpg|txt)$
정규 표현식 위치 ( *
물결표 바로 뒤의 대소 문자를 구분하지 않는 위치 )입니다. 로부터 의 nginx 문서 :
주어진 요청과 일치하는 위치를 찾기 위해 nginx는 먼저 접두사 문자열 (접두사 위치)을 사용하여 정의 된 위치를 확인합니다. 그 중에서도 가장 일치하는 접두사가있는 위치가 선택되어 기억됩니다. 그런 다음 구성 파일에 나타나는 순서대로 정규식이 검사됩니다. 정규식 검색은 첫 번째 일치시 종료되며 해당 구성이 사용됩니다. 정규식과 일치하는 항목이 없으면 이전에 기억 된 접두사 위치의 구성이 사용됩니다.
여기서 문제는 testdir 위치가 기억되고 있지만 정규식 단계에서 jpg / txt 위치가 선택되어 일치한다는 것입니다. 설명서의 다음 참고 사항은 솔루션을 기반으로 한 것입니다.
가장 긴 일치 접두사 위치에“^ ~”수정자가 있으면 정규식이 검사되지 않습니다.