암호 보호는 사이트 전체 또는 특정 경로 앞에 브라우저 로그인 프롬프트를 배치하여, 출시 전 사이트나 스테이징 사본, 관리자 영역을 비공개로 유지하는 가장 간단한 방법입니다. 이 가이드에서는 설정 방법, 사용자 관리, 작동 확인, 그리고 다시 제거하는 방법을 다룹니다.
KPanel에서 암호 보호 기능의 위치
- KPanel에 로그인합니다.
- 왼쪽 사이드바에서 웹사이트를 클릭한 다음 사이트를 클릭합니다.
- 사이트의 왼쪽 메뉴에서 설정를 연 다음 암호 보호을 엽니다.
직접 주소는 /websites/<site-id>/password-protect입니다.

작동 방식
보호 기능은 애플리케이션이 실행되기 전에 웹 서버가 HTTP Basic Auth를 사용하여 적용합니다. 보호된 URL을 방문하는 사람은 브라우저 자체의 로그인 대화상자를 받게 되며, 인증하기 전까지는 콘텐츠를 전혀 볼 수 없고 애플리케이션 코드에도 접근할 수 없습니다.
모든 것 앞에 위치하기 때문에, 렌더링된 페이지뿐만 아니라 같은 경로 아래의 자산, 업로드 파일, API 엔드포인트도 함께 보호합니다. 또한 검색 엔진 크롤러도 완전히 차단하는데, 이는 출시 전 사이트에서 정확히 원하는 동작입니다.
보호할 대상 선택하기
보호 추가을 클릭하면 첫 번째 질문은 범위이며, 두 가지 답이 있습니다.
Protect entire site. 루트, 관리자 영역 등 도메인을 방문하는 모든 사람이 로그인 프롬프트를 받게 됩니다. 아직 출시되지 않은 사이트, 스테이징 사본, 또는 전혀 공개적으로 읽혀서는 안 되는 것에 적합한 선택입니다.
Protect a specific path. 하나의 하위 경로만 잠그고 나머지 사이트는 공개로 둡니다. 해당 경로 아래의 모든 것이 포함되므로, /admin를 보호하면 /admin/users도 함께 보호됩니다.
한 사이트에 서로 다른 경로를 포함하는 여러 보호 설정을 생성할 수 있으며, 각각 다른 사용자를 가질 수 있습니다.
설정하기
- 보호 추가을 클릭합니다.
- 전체 사이트 보호 또는 특정 경로 보호를 선택합니다. 경로의 경우
/admin처럼 슬래시로 시작하도록 입력합니다. - 프롬프트 레이블을 설정합니다. 이는 브라우저 로그인 대화상자에 표시되는 텍스트로, 최대 64자까지 가능합니다. 기본값은 제한된 영역입니다. 사이트 이름처럼 알아보기 쉬운 것을 사용하면 방문자가 해당 프롬프트가 피싱 시도가 아니라 정상적인 것임을 알 수 있습니다.
- 사용자 이름과 8자 이상의 비밀번호를 가진 사용자를 최소 한 명 추가합니다.
- 접근이 필요한 추가 사용자마다 사용자 추가를 클릭합니다.
- 보호 적용을 클릭합니다.
규칙이 적용된 후 사이트에 직접 대조하여 확인되므로, 이후에 표시되는 상태는 실제 동작을 반영합니다.
Basic Auth 자격 증명은 모든 요청과 함께 전송됩니다. HTTPS에서는 전송 중 암호화되므로, 스테이징 사이트나 내부 영역을 차단하는 데는 적합합니다. 다만 이는 신원 확인 시스템이 아닙니다: 사용자별 감사 기록도 없고, 세션도 없으며, 비밀번호 재설정 절차도 없고, 로그인 실패 후 잠금 처리도 없습니다. 진짜로 민감한 것을 보호하는 데는 사용하지 말고, 팀에서 다른 곳에 쓰는 비밀번호를 재사용하지 마세요.
사용자 관리하기
기존 보호 설정의 수정 버튼을 열어 사용자 목록을 변경합니다.
- 사용자 추가: 사용자 추가를 클릭한 다음 사용자 이름과 비밀번호를 입력합니다.
- 비밀번호 변경: 해당 사용자의 비밀번호 필드에 새 비밀번호를 입력합니다.
- 비밀번호 유지: 필드를 비워 둡니다. 기존 사용자는 비밀번호가 변경되지 않았음을 나타내는 플레이스홀더가 표시됩니다.
- 사용자 제거: 해당 행의 제거 버튼을 클릭합니다.
비밀번호는 다시 표시되지 않습니다. 누군가 비밀번호를 잊어버렸다면 새 비밀번호를 설정하고 알려주세요.
기존 보호 설정의 범위는 변경할 수 없습니다. 보호 설정을 한 경로에서 다른 경로로 옮기려면 제거한 후 새로 만드세요.
작동 확인하기
각 보호 설정에는 상태 배지가 표시됩니다:
| 배지 | 의미 |
|---|---|
| 아직 확인되지 않음 | 아직 확인이 실행되지 않았습니다. 잠시 후 새로고침하세요 |
| 보호 확인됨(401) | 외부에서 해당 URL을 요청했을 때 실제 로그인 요청을 받았습니다 |
| 적용되었지만 응답하지 않음, 상태 코드 표시 | 규칙은 작성되었지만 사이트가 다른 것으로 응답했습니다 |
가운데 배지가 원하는 상태입니다. 이는 설정 파일이 작성되었다는 뜻이 아니라, 실제로 외부 요청이 인증 요구를 받았다는 뜻입니다.
각 행에는 Test 버튼도 있는데, 이를 누르면 새 탭에서 보호된 URL이 열려 직접 프롬프트를 확인할 수 있습니다. 이는 시크릿 창에서 하세요. 한번 로그인하면 브라우저가 계속 자격 증명을 전송하므로 사이트가 열려 있는 것처럼 보일 것입니다.
저장 후 서버의 다른 설정이 같은 도메인을 사용한다는 경고가 표시되면, 해당 충돌이 해결될 때까지 보호 설정이 적용되지 않습니다. 메시지에는 다른 설정의 이름이 표시됩니다. 확실하지 않다면 지원팀에 문의하세요.
보호 설정 제거하기
보호 설정의 제거 버튼을 클릭하고 확인합니다. 확인 창에는 결과가 명확히 안내됩니다: 로그인 프롬프트가 제거되고 해당 경로 또는 전체 사이트가 누구에게나 열립니다.
제거 후 패널은 사이트를 다시 확인합니다. 사이트가 열렸음을 아직 확인할 수 없다면, 확인되지 않은 성공을 주장하는 대신 약 30초 기다렸다가 새로고침하라고 안내합니다.
전체 사이트 보호를 제거하면 검색 엔진을 포함하여 즉시 전체 인터넷에 사이트가 공개됩니다. 출시일에 이를 수행하기 전에, 올바른 페이지가 게시되었는지, 테스트 콘텐츠가 제거되었는지, 그리고 플레이스홀더 가격이 수정되었는지 등 콘텐츠가 실제로 준비되었는지 확인하세요.
일반적인 사용 사례
출시 전. 사이트를 구축하는 동안 전체 사이트를 보호합니다. 출시할 때 제거하세요. 이는 관리자 영역, 업로드 파일, 스테이징 데이터도 함께 숨기기 때문에 "출시 예정" 플러그인보다 더 신뢰할 수 있습니다.
스테이징 환경. 공개적으로 읽힐 수 있는 스테이징 사본은 중복 콘텐츠 문제이자 데이터 유출 위험입니다. 보호를 적용하고 계속 보호된 상태로 두세요. 스테이징 환경을 참조하세요.
비 WordPress 사이트의 관리자 영역. 정적 사이트나 /admin 경로가 있는 커스텀 애플리케이션의 경우, 애플리케이션이 이미 수행하는 것 앞에 추가 잠금을 설정합니다.
클라이언트 검토 사이트. 클라이언트에게 사용자 이름과 비밀번호를 하나 제공하면, 프롬프트 레이블이 무엇에 로그인하는지 알려줍니다.
문제 해결
프롬프트는 나타나지만 비밀번호가 거부됩니다. 사용자 이름 앞뒤에 공백이 없는지 확인하고, 수정 대화상자에서 비밀번호를 다시 설정하세요. 비밀번호는 최소 8자 이상이어야 합니다.
제게는 사이트가 열려 있는 것처럼 보이지만 다른 사람에게는 보호되어 있습니다. 브라우저에 자격 증명이 캐시되어 있습니다. 시크릿 창에서 테스트하세요.
가동 시간 모니터링이 이제 사이트가 다운된 것으로 보고합니다. 전체 사이트 보호 시 예상되는 동작입니다: 검사기가 401을 받습니다. 사이트 가동 시간 모니터링을 참조하면, 장애 사유에 401이 표시됩니다.
검색 엔진에서 제 페이지가 빠졌습니다. 보호가 적용된 동안 역시 예상되는 동작입니다. 보호를 제거하고 사이트가 다시 크롤링 가능해지면 복원됩니다.
배지에 적용되었지만 응답하지 않음이라고 표시됩니다. 규칙보다 먼저 무언가가 응답한 것입니다. 표시된 상태 코드를 확인하고, 해당 경로에 리디렉션이 먼저 요청을 가로채는지 확인한 후 사이트 리디렉션을 참조하세요.
보호 설정을 제거할 수 없습니다. 제거하려면 사이트 쓰기 권한이 필요합니다. 읽기 전용 역할에서는 버튼이 비활성화되어 있습니다.
관련 페이지
- 인증서, 악성코드 검사, IP 차단, 로그인 강화 관련 사이트 보안
- 방문자 국가에 따라 접근을 제한하려면 사이트의 국가 차단
- 방문자에게 표시되는 401 페이지를 브랜드화하려면 맞춤 오류 페이지