Nginx에서 웹 디렉터리를 비밀번호로 보호하는 방법
웹 프로젝트 관리자는 어떤 방식으로든 자신의 작업을 보호해야 하는 경우가 많습니다. 웹사이트가 아직 개발 중인 동안 웹사이트를 비밀번호로 보호하는 방법을 묻는 사람들이 종종 있습니다.
이 튜토리얼에서는 Nginx를 웹 서버로 실행할 때 보호된 웹 디렉터리에 비밀번호를 지정하는 간단하면서도 효과적인 기술을 보여 드리겠습니다.
Apache 웹 서버를 사용하는 경우 웹 디렉토리를 비밀번호로 보호하는 방법에 대한 가이드를 확인할 수 있습니다.
- 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