2010-03-07 6 views
0

내 지식으로 Nginx는 구성 파일 내에서만 디렉토리를 암호로 보호 할 수 있습니다. 그것은 잘 작동하지만, 진짜 CONFIGS을 편집 할 수 없습니다 최종 사용자를위한 옵션 A) B)가NGINX : 사용자가 디렉터리를 암호로 보호하도록 허용 하시겠습니까?

가 지금 내가하는 웹 기반 표현에 대해 생각하고 수 있다면가 CONFIGS을 깰 것 아니다 그들이 가리키고 클릭 할 수있는 디렉토리 구조 - configs를 다시 작성하고 Nginx를 다시 죽이기 ... 그러나 어떻게 든 전체적인 생각은 cPanel v0.0.1 ;-)을 다시 작성하려고하는 것처럼 느낍니다.

아무도 여기에는 똑같은 문제가 있었으며 우아하고 유지 보수가 가능한 솔루션이 떠 올랐습니까? 서버를 완벽하게 제어 할 수 있습니다.

감사합니다.

답변

3

사용자가 설정을 변경하지 않겠습니까? 암호 보호를 위해 영역이 항상 동일하게 유지되면 htpasswd 파일로 충분합니다. 그리고 nginx 자체가 파일 존재 여부를 확인할 수 있습니다.

 
    location ~ ^/([^/]*)/(.*) { 
     if (-f $document_root/$1/.htpasswd) { 
       error_page 599 = @auth; 
       return 599; 
     } 
    } 
    location @auth { 
     auth_basic "Password-protected"; 
     auth_basic_user_file $document_root/$1/.htpasswd; 
    } 

작품을 나를 위해 nginx를-0.7.65로 : 그래서,이 일을 할 수있는 것입니다. 0.6.x 및 이전 릴리스는 아마도 이동하지 않을 수 있습니다.

+0

/위치가 일치하지 않습니다. 루트의 .htpasswd가 인증 요청을 트리거해야하는 경우 블록에 "if -f"조건을 넣습니다. 매칭은 거의 항상 가장 많이 요구되고 일치하는 것이 nginx가하는 마지막 일이기 때문에 나쁜 생각입니다. 게다가 매칭은 일반 위치에 비해 빠를 수 없습니다. – rzab

+0

감사의 말씀 Rzab! 내가 정확히이 사실을 .htpasswd 파일에서 루트 아래의 한 수준에서만 작동하는지 이해하고 있습니까? 그래서 /first/second/.htpasswd는 잡히지 않을 것입니까? 또한이 구현의 속도 위반에 대한 경험이 있습니까? 나는 항상 Nginx가 전체를 구현하지 않은 이유를 이해했습니다. 속도를 높이는 것이 특징 이었습니까? – MattW

+0

아야! 아마 정신이 산만 해졌다. 위치는 "~ * ^/(. *)/(. *)"이어야합니다. 오류, 둘째 및 그 이상의 레벨 일치. 특정 요구에 nginx 할 일을 찾는 관점에서 속도가 나쁘지 않아야합니다. 위치가 일치하면 .htpassword 파일 검사가 비용이 많이들 수 있습니다. 기본적으로 비밀번호로 /를 할 필요가 없다면 좋은 것입니다. "location = /"을 선언하십시오. 어쨌든 현명한 행동입니다. 암호로 보호되지 않을 것으로 예상되는 다른 위치 (예 :/rss)를 선언하십시오. 이것이 내가하는 일입니다. 그러나 아니요, 제작에 트릭을 사용할 기회가 없었습니다. – rzab

관련 문제