2010-01-06 2 views
16

저는 Ubuntu Jaunty에서 nginx로 작업하는 기본 인증을 얻으려고합니다. nginx.conf에서 필자는 서버 컨텍스트에서이 두 줄을 추가 :nginx 및 auth_basic

server { 
    ... 
    auth_basic "Restricted Access"; 
    auth_basic_user_file /etc/nginx/.htpasswd; 
    ... 
} 

그럼 내가 APT-get'ed 아파치 - 유틸 내가 htpasswd가 파일을 만드는 데 사용 htpasswd가, 얻을 :

htpasswd -d -c /etc/nginx/.htpasswd joe 

사이트에 액세스하려고하면 인증 대화 상자가 예상대로 나타나지만 사용자 이름과 암호를 입력하면 방금 대화 상자가 새로 고쳐집니다. 내가 제공하는 비밀번호가 마음에 들지 않는 것 같습니다. 나는 htpasswd를 -d 옵션을 사용하거나 사용하지 않고 실행하려고 시도했지만 여전히 운이 없다. 그것은 인증을 거부했다. 내가 뭘 잘못하고 있는거야?

도움을 주시면 감사하겠습니다. 내가 확인 할

+0

"auth_basic_user_file"의 상대 경로를 사용해 보셨습니까? – Nakul

+0

@KP이 문제를 해결할 수 있습니까? – codecowboy

답변

25

것들 :에

  • 권한`은/etc/nginx를/.htpasswd` - 파일이의 nginx를 실행하는 계정을 읽을 수 있습니까? `chmod 644`를 사용하여 일시적으로 모든 사용자가 읽을 수 있도록 시도 할 수 있습니다. 그것이 작동한다면,`chown`과`chmod` 설정을 적절하게 조합하여 nginx와 you/root가 읽을 수 있지만 다른 사용자는 (보안을 위해) 읽을 수 없도록 할 수 있습니다.
  • 'htpasswd`가 올바른 형식으로 해시를 생성하고 있는지 확인하십시오. 일반적으로 약 13 자의 영숫자 문자입니다 (예 :`username : wu.miGq/e3nro`). 이 명령은 MD5 해시도 생성 할 수 있는데`username : $ apr1 $ hzB2K ... $ b87zlCYMKufOxn9ol5QV4 /`nginx에서는 작동하지 않습니다.
  • nginx의 디버그 출력을 높이고 오류 로그에서 단서를 확인하십시오.
+4

http : // nginx의 문서에 따르면.org/ko/docs/http/ngx_http_auth_basic_module.html "MD5 기반 암호 알고리즘 (apr1)의 Apache 변형"이 이제 지원됩니다. – kkurian

+0

docs도 "Apache 변형이 현재 지원됨"을 지적했지만,이 문제는 일반 알고리즘. 불행하게도 nginx에서 디버그 로그를 사용하면 메시지가 여전히 "open()"이었고 문제의 내부 근본 원인 (nginx의 개발자 관점에서 볼 때) 인 .htpasswd "failed (13 : Permission denied)"가 유용했지만 쓸모가 없습니다 문제를 해결하려고 할 때 –

4

이전 답변이지만 답변이 없으며 Google에서 잘 언급되었습니다.

당신은 당신의 .htpasswd 파일의 상위 폴더의 권한 확인이 오류를 얻고 다른 제안을 시도하는 경우 : (을 읽고해야 nginx를 사용자 (기본적으로 www가 데이터) 및 실행 권한을 이건 나를 위해 고정).

1

또 하나의 잡기 나는 배쉬를 만났다. 프롬프트를 통해 내 비밀번호를 입력하는 대신 -b 옵션을 htpasswd으로 사용하여 비밀번호를 입력하십시오.

$ htpasswd -nb admin test123$secure 

다른 암호화 알고리즘을 시도하면서 비밀번호 불일치 오류가 계속 발생하는 이유를 알 수 없었습니다.

$ curl -u admin:test123$secure https://example.com 

마지막으로, 문제가 echo

$ echo test123$secure 
test123 

나는 달러 호주 달러의 신호로 해석 된 bash는 ($)를 사용하는 실수를 통해 자신을 reveiled : 나는 그것이 작동하는지 컬 확인 빈 변수이므로 다른 모든 것을 생략합니다. -b 옵션을 삭제하고 프롬프트를 사용하여 암호를 입력하면이 문제를 피할 수 있습니다.

+0

Downvoters는 관심이 있으십니까? 답변보다 댓글이 더 많습니까? –

+0

Upvoted, 단지 downvote 때문에 .. – kev