2013-05-12 2 views
5

phpMyAdmin, MemcacheMyAdmin 및 기타 관리 유틸리티와 같은 항목이 포함 된 Nginx 구동 사이트의 비밀번호를 비밀번호로 보호하려고합니다.403 금지됨 - Nginx - 정확한 자격증 명 사용

이 디렉토리에 내 사이트의 루트에 배치됩니다 :

domain.com/control/ 

내 서버의 절대 경로에 있습니다 :

/home/deployer/sites/domain.com/control/ 

내가 사용하여 디렉토리에 .htpasswd 파일을 생성 이 명령은 다음과 같습니다.

파일은 "root"사용자의 소유이며 0644 권한입니다.

Nginx에서이 도메인의 .conf 파일에 다음 위치 블록을 사용하여 인증해야합니다.

location /control { 
    auth_basic   "Restricted Area: Control"; 
    auth_basic_user_file /home/deployer/sites/domain.com/control/.htpasswd; 
    } 

비밀번호로 보호 된 디렉토리로 이동하면 사용자 이름과 비밀번호를 묻는 메시지가 나타납니다. 이전에 만든 자격 증명을 입력하면 오류 403 금지 된 페이지가 표시됩니다.

2013/05/12 17:31:01 [error] 30462#0: *1 directory index of "/home/deployer/sites/domain.com/control/memcache/" is forbidden, client: 64.123.456.225, server: domain.com, request: "GET /control/memcache/ HTTP/1.1", host: "domain.com" 
2013/05/12 17:31:09 [error] 30462#0: *1 directory index of "/home/deployer/sites/domain.com/control/memcache/" is forbidden, client: 64.123.456.225, server: domain.com, request: "GET /control/memcache/ HTTP/1.1", host: "domain.com" 

나는 경우 :

64.123.456.225 - - [12/May/2013:17:30:48 +0000] "GET /control HTTP/1.1" 401 597 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31" 
64.123.456.225 - admin [12/May/2013:17:30:48 +0000] "GET /control HTTP/1.1" 301 185 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31" 
64.123.456.225 - admin [12/May/2013:17:30:59 +0000] "GET /control/memcache/ HTTP/1.1" 403 199 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31" 

오류 로그는 다음을 보여

액세스 로그는 내가 "admin"사용자로 로그인 후, 로그인 프롬프트를 타격하고있어 내게 보여 해당 사이트의 Nginx .conf에 대한 Auth 블록을 제거합니다. 그런 다음 정상적인 페이지처럼 액세스 할 수 있습니다.

도움 주셔서 감사합니다.

답변

4

권한 또는 존재하지 않거나 유효하지 않은 디렉터리 인덱스 지시문으로 인해 발생할 수 있습니다.

권한 : www가 nginx에 의해 소유되었지만/var가 root에 의해 소유 된 경우 www는 var의 사용 권한을 상속하므로 액세스가 거부됩니다.

색인 지시자 : 디렉토리 색인을 사용할 수없는 파일로 설정하면 nginx가 403을 내 보냅니다.이 경우 index.php 대신 index.htm이 기본값으로 설정됩니다.

낙천 랭킹 1 위!

+0

올바른 내용입니다. "index index.php;"를 추가했습니다. 위치 블록에로드하고로드합니다. 많은 감사하겠습니다. –

+0

jgpatrick3에 의해 다른 답변을 피기 백하는 경우, autoindex를 사용하려고한다면 인덱스가 문제가 될 수 있습니다. 왜냐하면 인증은 외부 지시어에서'autoindex on '을 무시하기 때문입니다. 그래서'수동으로' 인증 된 영역에서 자동 색인 생성 '을 선택합니다. – Dubslow

0

오류는 인증이 아니라, 디렉토리는이 과 컨텐츠에 액세스하려고 :

웹 서버가이 index.html을 같은 알려진 인덱스 파일에 대한 확인 요청을 처리
/home/deployer/sites/domain.com/control/memcache/ 

, 인덱스를 .php 등등. 이 중 하나를 찾지 못하면 요청을 주어진 디렉토리의 모든 파일을 나열하려고 시도한 것으로 해석합니다. 이것은 (좋은) nginx 구성에서 금지 된 것으로 보입니다. 메시지 :

directory index of [...] is forbidden 

그러므로 나는

/home/deployer/sites/domain.com/control/memcache/ 

이 비어 있거나 nginx를 인식 인덱스 파일을 포함하지 않는 디렉토리를 같아요.
특정 파일을 요청하거나 index.html 파일을 만들면 403 오류가 없어야합니다.

7

이 질문에 답이 있지만, 나는 여전히 여기에 문제가있는 다른 사례를 넣어 다른 사람들이 나와 같이 어려움을 겪지 않아도되도록하고 싶습니다.

내가 너무 올바른 자격 증명 403은 인덱스 파일 경우가있어, 파일 존재는 경우도 아니고 설정이 있었다 :

auth_basic "some message"; 
auth_basic_user_file /etc/nginx/.htpasswd; 

문제는 여기에 /etc/nginx/.htpasswd 절대 때문이다 경로는 실제로 동일한 디렉토리 내에서 nginx.conf으로 가리 킵니다. 그것은 어떻게 든 파일을 찾기 위해 nginx을 혼란스럽게 만들었습니다. (어떤 식 으로든라고 말하면 나는 절대 경로가 절대적이라는 것을 알기 때문에 nginx을 어떻게 처리 할 수 ​​없었는지 완전히 이해하지 못합니다. 따라서 누군가가 더 좋은 설명을 가지고 있다면, 의견으로 공유하십시오.) 나는 그것을 변경하는 경우

는 :

auth_basic_user_file .htpasswd; 

nginxnginx.conf와 같은 디렉토리에이 파일을 찾을 것으로 예상하기 때문했다. 나는 경로가 nginx를 혼동하지 않았다고 생각하기 때문에 그것은 또한 일

auth_basic_user_file /home/user/.htpasswd; #and move the file to /home/user too 

:

나는로 변경하더라도.

+0

그래,이게 정답이라고 생각해. 이것이 나를 도운 유일한 대답입니다. – m4l490n

0

나는 어떻게 든 사람을 도움이된다면 내가 만들기 위해 열심히 고생 때문에 나는 기쁠,

위의 주어진 링크를 확인하시기 바랍니다 HERE을 .htpasswd 사용의 nginx에 "로 설정하는 방법 인증"의 솔루션 단계를 설명했다 이 일이.

감사합니다.

3

나는 비슷한 문제가있어서 여기 왔어. 나는 "autoindex on"이되도록 최상위 디렉토리를 설정했다. "autoindex on;"을 반복하지 않고 별도의 선언 ("/ subdirectory")을 사용하여 하위 디렉토리에 대한 비밀번호 보호를 추가했습니다. 이것은 색인 파일을 찾는 nginx를 남겨 뒀다. 그리고 아무것도 없었던 이래로, 나는 "금지되었던"것을 보았다.

"autoindex on"을 추가하면 "/ subdirectory"설정으로 이동하십시오. 하위 디렉토리를 탐색 할 때 디렉토리 목록이 나타납니다.