2017-03-27 6 views
1

mydomain.com/protected_folder/에 가면 잘 작동하는 Nginx 암호로 보호 된 디렉토리가 있습니다. 그러나 mydomain.com/protected_folder/index.php로 가면 페이지가 잘로드되고 ... 안됩니다.Nginx 비밀 번호로 보호 된 디렉토리가 더 깊은 링크를 위해 작동하지 않습니다

내 위치 블록을 설정하여 보호 된 디렉토리의 모든 액세스를 완전히 차단하도록 설정하려면 어떻게해야하나요?

내 블록 : 보조 노트로

location /protected_folder { 
     try_files $uri $uri/ =404; 
     auth_basic "Protected Folder Login"; 
     auth_basic_user_file /etc/nginx/my_pass; 
     } 

. 전체 사이트 비밀번호를 보호 할 때 문제가되지 않았습니다.

답변

1

문제는 .php 파일이이 위치 블록에서 처리되지 않는다는 것입니다. 그들은 location ~ \.php$과 같은 위치 블록에 의해 처리됩니다.

^~ 수정자를 사용하면이 위치 블록의 정규 표현식 위치 블록보다 우선 순위가 높습니다. 자세한 내용은 this document을 참조하십시오.

물론 이것은 //mydomain.com/protected_folder/index.php이 올바르게 실행되는 것을 방지합니다. 이 문제를 해결하려면 아래에 .php 개의 파일을 처리하려면 중첩 된 location ~ \.php$ 블록이 필요합니다. 예를 들어

:

root /path/to/root; 

location ^~ /protected_folder { 
    try_files $uri $uri/ =404; 
    auth_basic "Protected Folder Login"; 
    auth_basic_user_file /etc/nginx/my_pass; 

    location ~ \.php$ { 
     ... 
    } 
} 

location ~ \.php$ { 
    ... 
} 

location ~ \.php$ 중첩 된 블록은 server 블록 내의 기존 location ~ \.php$ 블록의 중복이다.

+0

트릭을 한 것으로 보이는 Richard에게 감사드립니다. 대단히 감사합니다! –