웹사이트 검색

Rocky Linux 9에서 Nginx로 암호 인증을 설정하는 방법


소개

웹 서버를 설정할 때 액세스를 제한하려는 사이트 섹션이 종종 있습니다. 웹 응용 프로그램은 종종 고유한 인증 및 권한 부여 방법을 제공하지만 이러한 방법이 부적절하거나 사용할 수 없는 경우 웹 서버 자체를 사용하여 액세스를 제한할 수 있습니다. 이 가이드에서는 Rocky Linux 9에서 실행되는 Nginx 웹 서버의 자산을 비밀번호로 보호합니다.

전제 조건

시작하려면 다음이 필요합니다.

  • 관리 작업을 수행하기 위해 sudo 권한이 있는 루트가 아닌 사용자로 Rocky Linux 9 서버 환경에 액세스합니다. 이러한 사용자를 만드는 방법을 알아보려면 Rocky Linux 9 초기 서버 설정 가이드를 따르세요.
  • Rocky Linux 9에 Nginx를 설치하는 방법에 대한 이 가이드의 1단계와 2단계에 따라 시스템에 Nginx를 설치했습니다.

1단계 - 비밀번호 파일 생성

시작하려면 사용자 이름과 암호 조합을 저장할 파일을 만들어야 합니다. 서버에서 이미 사용할 수 있는 OpenSSL 유틸리티를 사용하여 이를 수행할 수 있습니다.

서버에 OpenSSL이 설치되어 있으면 추가 패키지 없이 암호 파일을 만들 수 있습니다. /etc/nginx 구성 디렉토리에 .htpasswd라는 숨겨진 파일을 만들어 사용자 이름과 비밀번호 조합을 저장합니다.

이 명령을 사용하여 파일에 사용자 이름을 추가할 수 있습니다. 여기서는 sammy가 사용자 이름으로 사용되지만 원하는 이름을 사용할 수 있습니다.

  1. sudo sh -c "echo -n 'sammy:' >> /etc/nginx/.htpasswd"

그런 다음 다음을 입력하여 사용자 이름에 대한 암호화된 비밀번호 항목을 추가합니다.

  1. sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

추가 사용자 이름에 대해 이 프로세스를 반복할 수 있습니다. 다음을 입력하여 사용자 이름과 암호화된 암호가 파일 내에 어떻게 저장되어 있는지 확인할 수 있습니다.

  1. cat /etc/nginx/.htpasswd
Output
sammy:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1

2단계 - Nginx 암호 인증 구성

이제 Nginx가 읽을 수 있는 형식의 사용자 및 비밀번호가 포함된 파일이 있으므로 보호된 콘텐츠를 제공하기 전에 이 파일을 확인하도록 Nginx를 구성해야 합니다.

Rocky Linux 9와 함께 제공되는 기본 텍스트 편집기는 vi입니다. vi는 매우 강력한 텍스트 편집기이지만 사용 경험이 부족한 사용자에게는 다소 둔감할 수 있습니다. Rocky Linux 9 서버에서 구성 파일 편집을 용이하게 하기 위해 nano와 같은 사용자 친화적인 편집기를 설치할 수 있습니다.

  1. sudo dnf install nano -y

이제 nano를 사용하여 Nginx 구성 파일을 편집할 수 있습니다.

  1. sudo nano /etc/nginx/nginx.conf

인증을 설정하려면 제한할 컨텍스트를 결정해야 합니다. 다른 선택 중에서 Nginx를 사용하면 서버 수준 또는 특정 위치 내부에 대한 제한을 설정할 수 있습니다.

이 예제는 서버 수준 제한에 대한 것이므로 파일 내의 기본 server{ } 블록에 옵션을 추가합니다. auth_basic 지시문은 자격 증명을 묻는 메시지가 표시될 때 사용자에게 표시할 인증 및 영역 이름을 켭니다. auth_basic_user_file 지시문을 사용하여 생성한 암호 파일을 Nginx에 지정합니다.

. . .
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
     . . .
}
. . .

참고: 제한을 두는 블록에 따라 사이트에서 암호가 필요한 부분의 세분성을 제어할 수 있습니다. 이 대체 예제는 위치 블록이 있는 문서 루트만 제한하며 웹 공간 내의 특정 디렉토리만 대상으로 이 목록을 수정할 수도 있습니다.

…
server {
    listen 80 default_server;

     . . .
   
    location / {
    try_files $uri $uri/ =404;
    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
    }
}
…

완료되면 파일을 저장하고 닫습니다. 비밀번호 정책을 구현하려면 Nginx를 다시 시작하세요.

  1. sudo systemctl restart nginx

이제 지정한 디렉터리가 암호로 보호되어야 합니다.

3단계 - 비밀번호 인증 확인

콘텐츠가 보호되는지 확인하려면 웹 브라우저에서 제한된 콘텐츠에 액세스해 보십시오.

http://server_domain_or_IP

사용자 이름과 암호 프롬프트가 표시되어야 합니다.

올바른 자격 증명을 입력하면 콘텐츠에 액세스할 수 있습니다. 잘못된 자격 증명을 입력하거나 "취소\를 누르면 "인증 필요\ 오류 페이지가 표시됩니다.

결론

이제 사이트에 대한 기본 인증을 설정하는 데 필요한 모든 것이 준비되었습니다. 자격 증명이 일반 텍스트로 서버에 전송되지 않도록 암호 보호를 TLS 암호화와 결합해야 합니다. Rocky Linux 9에서 Let's Encrypt로 Nginx를 보호하는 방법에 대한 이 가이드를 확인하세요.