웹사이트 검색

Ubuntu 12.10에서 Nginx로 HTTP 인증을 설정하는 방법


빨간색의 의미

사용자가 입력하거나 사용자 지정해야 하는 줄은 이 자습서에서 빨간색으로 표시됩니다! 나머지는 대부분 복사하여 붙여넣을 수 있어야 합니다.

Nginx 정보

Nginx(엔진 x로 발음)는 Igor Sysoev가 작성한 HTTP 및 리버스 프록시 서버이자 메일 프록시 서버로 아파치에 비해 유연하고 가벼운 프로그램입니다. 공식 nginx 문서는 여기에 있습니다.

전제 조건

전제 조건으로 VPS 설정 방법에 대한 기사를 살펴보고 Nginx도 설치했다고 가정합니다. 그렇지 않은 경우 커뮤니티의 nginx 설치에서 VPS 설정에 대한 기사를 찾을 수 있습니다.

1단계: Apache 유틸리티

기본 인증을 사용하여 사용자를 위해 암호화된 파일을 만들고 생성하려면 htpasswd가 필요합니다. 아래 명령을 사용하여 apache2-utils를 설치합니다.

  sudo apt-get install apache2-utils

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

nginx에서 제공하는 웹사이트 디렉토리 아래에 .htpasswd 파일을 만듭니다. 다음 명령은 파일을 만들고 사용자와 암호화된 암호를 추가합니다.

  sudo htpasswd -c /etc/nginx/.htpasswd exampleuser

이 도구는 암호를 묻는 메시지를 표시합니다.

New password:
Re-type new password:
Adding password for user exampleuser

htpasswd 파일의 구조는 다음과 같습니다.

login:password

이 htpasswd는 Nginx를 실행하는 사용자 계정에서 액세스할 수 있어야 합니다.

3단계: Nginx 구성 업데이트

웹사이트의 nginx 구성 파일은 /etc/nginx/sites-available/ 아래에 있어야 합니다. 보호하려는 도메인 경로 아래에 두 항목을 추가하십시오.

    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;

두 번째 줄은 웹사이트의 htpasswd 파일 위치입니다.

예를 들어 nginx 구성 파일이 /etc/nginx/sites-available/website_nginx.conf라고 가정하고 vi 또는 선택한 편집기를 사용하여 파일을 엽니다.

 
  sudo vi /etc/nginx/sites-available/website_nginx.conf

그런 다음 다음 경로에 두 줄을 추가합니다.

 
 server {
  listen       portnumber;
  server_name  ip_address;
  location / {
      root   /var/www/mywebsite.com;
      index  index.html index.htm;
      auth_basic "Restricted";                                #For Basic Auth
      auth_basic_user_file /etc/nginx/.htpasswd;  #For Basic Auth
  }
}

4단계: Nginx 다시 로드

웹사이트에 변경 사항을 반영하려면 nginx 구성을 다시 로드하고 기본 인증을 사용하여 보호된 도메인에 액세스를 시도하십시오.

$ sudo /etc/init.d/nginx reload
* Reloading nginx configuration...                       

이제 보안을 설정한 웹사이트 또는 도메인 경로에 액세스하려고 하면 로그인 및 비밀번호를 입력하라는 브라우저 프롬프트가 표시됩니다. .htpasswd 파일을 만드는 동안 사용한 세부 정보를 입력합니다. 프롬프트는 올바른 자격 증명을 입력할 때까지 웹 사이트에 액세스할 수 없습니다.