웹사이트 검색

Nginx에서 웹 디렉터리를 비밀번호로 보호하는 방법


웹 프로젝트 관리자는 어떤 방식으로든 자신의 작업을 보호해야 하는 경우가 많습니다. 웹사이트가 아직 개발 중인 동안 웹사이트를 비밀번호로 보호하는 방법을 묻는 사람들이 종종 있습니다.

이 튜토리얼에서는 Nginx를 웹 서버로 실행할 때 보호된 웹 디렉터리에 비밀번호를 지정하는 간단하면서도 효과적인 기술을 보여 드리겠습니다.

Apache 웹 서버를 사용하는 경우 웹 디렉토리를 비밀번호로 보호하는 방법에 대한 가이드를 확인할 수 있습니다.

  1. Apache의 웹 디렉터리를 비밀번호로 보호

요구사항

이 튜토리얼의 단계를 완료하려면 다음이 필요합니다.

  • Nginx 웹 서버가 설치되었습니다.
  • 서버에 대한 루트 액세스

1단계: 사용자 및 비밀번호 생성

1. 웹 디렉토리를 비밀번호로 보호하려면 암호화된 사용자 이름비밀번호를 포함할 파일을 만들어야 합니다.

Apache를 사용할 때 'htpasswd' 유틸리티를 사용할 수 있습니다. 시스템에 해당 유틸리티가 설치되어 있는 경우 다음 명령을 사용하여 비밀번호 파일을 생성할 수 있습니다.

htpasswd -c /path/to/file/.htpasswd username

이 명령을 실행하면 위 사용자의 비밀번호를 설정하라는 메시지가 표시되고 이후 지정된 디렉터리에 .htpasswd 파일이 생성됩니다.

2. 해당 도구가 설치되어 있지 않으면 .htpasswd 파일을 수동으로 만들 수 있습니다. 파일에는 다음 구문이 있어야 합니다.

username:encrypted-password:comment

사용할 사용자 이름은 귀하에 따라 다르므로 원하는 것을 선택하십시오.

더 중요한 부분은 해당 사용자의 비밀번호를 생성하는 방법입니다.

2단계: 암호화된 비밀번호 생성

3. 비밀번호를 생성하려면 Perl의 통합 '암호화' 기능을 사용하세요.

다음은 해당 명령의 예입니다.

perl -le 'print crypt("your-password", "salt-hash")'

실제 사례:

perl -le 'print crypt("#12Dfsaa$fa", "1xzcq")'

이제 파일을 열고 사용자 이름과 생성된 문자열을 세미콜론으로 구분하여 입력하세요.

방법은 다음과 같습니다.

vi /home/tecmint/.htpasswd

사용자 이름과 비밀번호를 입력하세요. 내 경우에는 다음과 같습니다.

tecmint:1xV2Rdw7Q6MK.

“Esc”를 누르고 “:wq”를 눌러 파일을 저장합니다.

3단계: Nginx 구성 업데이트

4. 이제 작업 중인 사이트와 관련된 Nginx 구성 파일을 열고 편집하세요. 우리의 경우에는 다음 위치의 기본 파일을 사용합니다.

vi /etc/nginx/conf.d/default.conf       [For CentOS based systems]
OR
vi /etc/nginx/nginx.conf                [For CentOS based systems]


vi /etc/nginx/sites-enabled/default     [For Debian based systems]

이 예에서는 nginx의 디렉터리 루트(/usr/share/nginx/html)를 비밀번호로 보호합니다.

5. 이제 보호하려는 경로 아래에 다음 두 줄 섹션을 추가합니다.

auth_basic "Administrator Login";
auth_basic_user_file /home/tecmint/.htpasswd;

이제 파일을 저장하고 다음을 사용하여 Nginx를 다시 시작하십시오.

systemctl restart nginx
OR
service nginx restart

6. 이제 해당 IP 주소를 브라우저에 복사하여 붙여넣으면 비밀번호를 묻는 메시지가 표시됩니다.

그게 다야! 이제 기본 웹 디렉토리가 보호됩니다. 사이트에서 비밀번호 보호를 제거하려면 .htpasswd 파일에 방금 추가한 두 줄을 제거하거나 다음 명령을 사용하여 비밀번호 파일에서 추가된 사용자를 제거하면 됩니다.

htpasswd -D /path/to/file/.htpasswd username