웹 서버 · 3 min read · Jan 04, 2026
.htaccess를 이용한 서브디렉토리 인증
.htaccess를 이용한 서브디렉토리 인증
저자: Nayyar Ahmad
연락처: nayyares AT gmail DOT com
홈페이지: www.cbtcandy.org
헌정: Baji에게, 그녀가 나를 위해 해준 모든 노력에.
서문:
.htaccess는 디렉토리별로 구성 변경을 제공하는 데 사용됩니다. 이 파일은 .htaccess 파일이 포함된 디렉토리에 강제로 적용될 하나 이상의 지시어를 포함할 수 있습니다.
.htaccess는 이 구성 수정 파일의 인기 있는 이름이며, Apache 구성 파일에서 AccessFileName 매개변수를 변경하여 이 기본 이름을 변경할 수 있습니다. 즉,
AccessFileName .anyname이 방법에서는 두 개의 평행 레벨 서브디렉토리에 대한 더미 시나리오를 설정하고 두 디렉토리 모두에 대해 비밀번호 인증을 구현할 것입니다. 이는 올바른 사용자 이름과 비밀번호를 가진 사용자만 이 디렉토리에 접근할 수 있음을 의미합니다.
이제 시작합니다 :)
여기서 저는 DocumentRoot 디렉토리가 /var/www/html이라고 가정하지만, VirtualHost 구성이 있거나 Apache가 다른 루트 디렉토리에 구성되어 있다면 상황에 맞게 조정할 수 있습니다.
참고: 이 디렉토리의 이름을 test-dir1과 test-dir2라는 더미 이름으로 설정하겠습니다.
1 디렉토리 생성:
$ cd /var/www/html$ mkdir test-dir1$ mkdir test-dir22 테스트 HTML 파일 생성:
첫 번째 디렉토리에 html 파일 생성.
$ cd /var/www/html/test-dir1$ cat > index.htm| TEST PAGE IN TEST-DIR1. |
두 번째 디렉토리에 html 파일 생성.
$ cd /var/www/html/test-dir2$ cat > index.htm| TEST PAGE IN TEST-DIR2. |
3 테스트 페이지 탐색:
이제 웹 브라우저를 열고 페이지가 사용 가능한지 테스트할 수 있습니다. 저는 Firefox를 좋아합니다(정말 멋지니까요 :) ) 그리고 입력합니다:
이것은 첫 번째 디렉토리 테스트 페이지를 표시하고,
는 test-dir2의 두 번째 테스트 페이지를 표시합니다.
두 페이지를 모두 볼 수 있다면, .htaccess를 거의 사용할 준비가 된 것입니다.
4 .htaccess 파일 생성:
$ cd /var/www/html/test-dir1$ vi .htaccess이 파일에 다음 줄을 작성합니다:
| AuthName "Authorized Users Only." AuthType Basic AuthUserFile /etc/httpd/conf/.htpasswd require user testusr |
이제 이 파일에 작성한 마법의 줄이 무엇인지 설명하겠습니다: AuthName 매개변수는 사용자가 로그인할 때 비밀번호 입력 상자의 제목을 정의하고, AuthType은 서버에 어떤 종류의 처리가 사용되고 있는지를 알려주며, Basic은 거의 모든 목적에 대해 가장 일반적이고 적절합니다. AuthUserFile은 .htpasswd 파일의 위치를 정의하는 데 사용되며, 이 파일에는 .htaccess 파일에서 인증될 사용자의 비밀번호가 포함됩니다. require user는 신뢰할 수 있는 사용자를 식별하는 데 사용되며, 신뢰할 수 있는 사용자가 여러 명인 경우, 이름을 공백으로 구분된 목록으로 지정할 수 있습니다.
이제 test-dir2를 .htaccess로 보호하려면 test-dir1에서 test-dir2로 복사해야 합니다. 다음 명령어를 사용합니다:
$ cp /var/www/html/test-dir1/.htaccess /var/www/html/test-dir2/5 사용자 생성:
여기서 우리는 .htaccess를 확인하기 위해 테스트 사용자를 생성할 것입니다:)
$ adduser testusr$ passwd testusr6 Apache에 사용자 알리기:
이제 Apache에 사용자와 비밀번호를 알려야 합니다. 그러나 이 단계로 들어가기 전에 RPM과 소스 Apache 설치의 차이를 설명할 의무가 있습니다. :) RPM에서 Apache를 설치한 경우 관련 명령이 /usr/local/bin에 설치되므로 문제가 없습니다. 시스템의 어디에서나 htpasswd 명령을 사용할 수 있지만, 소스에서 Apache를 설치한 경우 htpasswd 명령을 실행하기 위해 Apache bin 디렉토리를 찾아야 합니다. 이 HowTo에서는 두 가지 방법을 제공하겠습니다:
$ htpasswd -c /etc/httpd/conf/.htpasswd testusr위 명령은 /usr/local/bin에 htpasswd가 있는 경우 작동하며, 이는 RPM에서 Apache를 설치한 경우 발생합니다. /etc/httpd/conf/.htpasswd는 인증된/신뢰할 수 있는 사용자 비밀번호가 포함될 파일의 위치입니다.
또는
$ cd /apache/bin/$ ./htpasswd -c /etc/httpd/conf/.htpasswd testusr위 명령은 소스에서 Apache를 설치한 경우에 해당하며, $ cd /apache/bin은 시스템에 따라 조정할 수 있습니다. 아마도 다른 곳에 설치했을 것입니다.
7 .htpasswd 파일 권한:
.htpasswd 파일의 파일 권한을 설정하고 Apache 사용자를 이 파일의 소유자로 만들어야 합니다.
$ chown apache.apache /etc/httpd/conf/.htpasswd8 httpd.conf 편집:
이제 httpd.conf를 편집해야 합니다. Apache는 .htaccess에 대해 알려야 하므로 AllowOverride All | none을 AuthConfig로 변경합니다. 이제 두 가지 경우가 있습니다. 하나는 단일 사이트를 호스팅하는 경우이고, 다른 하나는 VirtualHost가 있는 경우입니다. 첫 번째 경우는 다음과 같습니다:
이 경우 httpd.conf 파일에
| |
이제 두 번째 경우, 여러 사이트를 호스팅하는 경우, 즉 VirtualHost:
| |
9 Apache 재시작:
이제 Apache 서버를 재시작하여 구성을 다시 로드해야 합니다.
RPM 기반 시스템의 경우:
$ service httpd restart소스 기반 시스템의 경우, Apache의 bin 디렉토리 경로를 조정합니다.
$ /apache/bin/apachectl restart10 테스트:
이제 모든 것이 테스트할 준비가 되었습니다. 다시 좋아하는 브라우저를 열고 다음 링크를 시도해 보세요:
그리고
참고: 이 링크를 탐색할 때 사용자 이름과 비밀번호를 요청받게 되며, 제공하면 테스트 페이지로 이동합니다. 그러나 한 디렉토리에 로그인하면 다른 테스트 디렉토리에 대해 사용자 이름과 비밀번호를 요구하지 않습니다. Apache는 동일한 레벨의 디렉토리 또는 서브디렉토리에 대해 사용자 이름과 비밀번호를 반복해서 요청하지 않기 때문입니다. 따라서 인증을 받으면 자식 및 평행 디렉토리를 사용할 수 있습니다. 그러나 여전히 확인하고 싶다면 링크 텍스트 기반 브라우저를 사용하세요. 제가 확인할 때 사용하는 방법입니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.