nginx auth_basic은 HTTPS를 통해 작동하나요?

nginx auth_basic은 HTTPS를 통해 작동하나요?

SSL 웹사이트에서 다음과 같이 비밀번호로 보호된 디렉토리를 설정하려고 했습니다.

/etc/nginx/sites-사용 가능/기본

server {
    listen 443:
    ssl on;
    ssl_certificate /usr/certs/server.crt;
    ssl_certificate_key /usr/certs/server.key;

    server_name server1.example.com;

    root /var/www/example.com/htdocs/;
    index index.html;

    location /secure/ {
        auth_basic "Restricted";
        auth_basic_user_file /var/www/example.com/.htpasswd;
    }
}

문제는 URL에 액세스하려고 할 때 https://server1.example.com/secure/'404: 찾을 수 없음' 오류 페이지가 표시된다는 것입니다.

내 error.log에는 다음 오류가 표시됩니다.

011/11/26 03:09:06 [error] 10913#0: *1 no user/password was provided for basic authentication,
client: 192.168.0.24, server: server1.example.com, request: "GET /secure/ HTTP/1.1",
host: "server1.example.com"

그러나 일반 HTTP 가상 호스트에 대해 비밀번호로 보호된 디렉토리를 아무런 문제 없이 설정할 수 있었습니다.

설정 문제인가요 아니면 다른 문제인가요?

답변1

아마도 절대 경로가 nginx를 혼동하는 auth_basic_user_file의 경로 문제일 수 있습니다.

http://wiki.nginx.org/HttpAuthBasicModule#auth_basic_user_file

버전 0.6.7부터 파일 이름 경로는 nginx 구성 파일 nginx.conf의 디렉터리에 상대적이지만 nginx 접두사 디렉터리에는 해당되지 않습니다.

다른 경우에는 어떻게 작동하는지 잘 모르겠습니다. 문서의 인용문에 따르면 다음과 같은 것이 있어야 합니다.

auth_basic_user_file htpasswd/www.example.com

서버 구성 파일로 "/etc/nginx/nginx.conf"가 있는 경우 비밀번호 파일은 "/etc/nginx/htpasswd/www.example.com"입니다.

"sudo nginx -t"를 실행하여 nginx 구성을 확인할 수 있습니다. 구성 오류가 있는 경우, 즉 인증 파일이 예상한 위치에 없으면 그 시점에 알려주어야 합니다.

관련 정보