Nginx에서 기본 HTTP 인증을 구성하는 방법
기본 HTTP 인증은 간단한 사용자 이름/비밀번호 인증을 설정하여 웹 사이트/애플리케이션 또는 그 일부에 대한 액세스를 제한하는 보안 메커니즘입니다. 기본적으로 전체 HTTP 서버, 개별 서버 블록 (Apache의 가상 호스트) 또는 위치 블록을 보호하는 데 사용할 수 있습니다.
이름에서 알 수 있듯이 이것은 신뢰할 수있는 안전한 방법이 아닙니다. 보다 안정적인 다른 보안 조치와 함께 사용해야합니다. 예를 들어 웹 애플리케이션이 HTTP에서 실행중인 경우 사용자 자격 증명이 일반 텍스트로 전송되므로 HTTPS 활성화를 고려해야합니다.
이 가이드의 목적은 작지만 유용한 보안 계층을 추가하여 웹 애플리케이션에서 개인/권한이있는 콘텐츠 (예 : 관리자 측에 국한되지 않음)를 보호하는 것입니다. 아직 개발 단계에있는 웹 사이트 나 응용 프로그램에 대한 액세스를 차단하는 데 사용할 수도 있습니다.
- Install LEMP Stack in CentOS/RHEL 7
- Install LEMP Stack in Ubuntu/Debian
HTTP 인증 사용자 파일 생성
먼저 사용자 이름 : 암호
쌍을 저장할 파일을 만들어야합니다. 이 파일을 만들기 위해 Apache HTTP Server의 htpasswd 유틸리티를 사용합니다.
먼저 htpasswd 유틸리티를 제공하는 패키지 인 apache2-utils 또는 httpd-tools가 시스템에 설치되어 있는지 확인하고, 그렇지 않으면 배포판에 적절한 명령을 실행하여 설치합니다.
# yum install httpd-tools [RHEL/CentOS] $ sudo apt install apache2-utils [Debian/Ubuntu]
그런 다음 아래의 htpasswd 명령을 실행하여 첫 번째 사용자로 암호 파일을 만듭니다. -c
옵션은 암호 파일을 지정하는 데 사용됩니다. [Enter]를 누르면 사용자 암호를 입력하라는 메시지가 표시됩니다.
# htpasswd -c /etc/nginx/conf.d/.htpasswd developer
두 번째 사용자를 추가하고 여기에서 -c
옵션을 사용하지 마십시오.
# htpasswd /etc/nginx/conf.d/.htpasswd admin
이제 암호 파일이 준비되었으므로 액세스를 제한 할 웹 서버 부분을 구성하십시오. 암호 파일 내용 (사용자 이름 및 암호화 된 암호 포함)을 보려면 아래 cat 명령을 사용하십시오.
# cat /etc/nginx/conf.d/.htpasswd

Nginx에 대한 HTTP 인증 구성
앞서 언급했듯이 웹 서버, 단일 웹 사이트 (서버 블록 사용) 또는 위치 지시문에 대한 액세스를 제한 할 수 있습니다. 이를 위해 두 가지 유용한 지시문을 사용할 수 있습니다.
- auth_basic – turns on validation of user name and password using the “HTTP Basic Authentication” protocol.
- auth_basic_user_file – specifies the password file.
모든 서버 블록에 적용되는 전체 웹 서버에 대한 기본 인증을 구현하려면 /etc/nginx/nginx.conf 파일을 열고 http 컨텍스트에 아래 행을 추가하십시오.
http{ auth_basic "Restricted Access!"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd; ……... }
특정 도메인 또는 하위 도메인에 대한 기본 인증을 사용하려면 /etc/nginx/conf.d/ 또는/etc/nginx/conf/sites-available (Nginx 설치 방법에 따라 다름)에서 구성 파일을 연 다음 "서버 블록 또는 컨텍스트에서 아래 구성 :
server { listen 80; server_name example.com; auth_basic "Restricted Access!"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd; location / { …….. } ……... }
위치 지시문 내에서 기본 인증을 활성화 할 수도 있습니다. 아래 예에서는 /admin
위치 블록에 액세스하려는 모든 사용자에게 인증을 요청합니다.
server { listen 80; server_name example.com www.example.com; location / { …….. } location /admin/ { auth_basic "Restricted Access!"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd; } location /public/{ auth_basic off; #turns off basic http authentication off for this block } …….. }
기본 HTTP 인증을 구성한 경우 웹 서버 나 하위 도메인 또는 사이트의 특정 부분에 액세스하려는 모든 사용자 (구현 한 위치에 따라 다름)는 아래 스크린 샷에 표시된대로 사용자 이름과 비밀번호를 입력해야합니다. ".

사용자 인증에 실패한 경우 아래와 같이“401 Authorization Required”오류가 표시됩니다.

기본 HTTP 인증으로 액세스 제한에서 자세한 정보를 찾을 수 있습니다.
다음의 유용한 Nginx HTTP 서버 관련 가이드를 읽고 싶을 수도 있습니다.
- How to Password Protect Web Directories in Nginx
- The Ultimate Guide to Secure, Harden and Improve Performance of Nginx
- Setting Up HTTPS with Let’s Encrypt SSL Certificate For Nginx
이 가이드에서는 Nginx HTTP 웹 서버에서 기본 HTTP 인증을 구현하는 방법을 보여주었습니다. 질문이 있으시면 아래 피드백 양식을 사용하십시오.