NGINX HTTP 기본 인증을 통한 접속 제한 설정하기

NGINX에서 HTTP 기본 인증 설정 방법을 알아보고, 실습을 통해 쉽게 적용하고 사용할 수 있습니다.


[WEB] NGINX에서 HTTP 기본 인증을 통한 접속 제한 설정하기
NGINX HTTP Basic Authentication

NGINX에서 HTTP 기본 인증 설정 방법을 알아보고, 실습을 통해 쉽게 적용하고 사용할 수 있습니다.

NGINX를 사용해서 웹 서비스를 사용하고 있을 경우 특정 URL이나 디렉터리를 HTTP 기본 인증을 통해 로그인을 성공한 사용자에게만 접근을 허용할 수 있습니다.
웹 서비스를 통해 전체 공개되지 않고, 특정 사용자에게만 필요한 CMS와 같이 컨텐츠 혹은 데이터 파일의 접속을 허용하는 경우 사용됩니다.


실습 환경

  • 운영 체제(OS) : CentOS 8
  • root 계정으로 실행
  • IP 설정 및 인터넷이 가능한 환경
  • nginx version: nginx/1.18.0

NGINX에서 HTTP 기본 인증을 사용하기 위해서 ngx_http_auth_basic_module 모듈을 사용하며, dnf나 yum을 사용해서 패키지로 설치 시 기본으로 추가되어 있습니다.
이 ngx_http_auth_basic_module 모듈은 HTTP 기본 인증 프로토콜을 사용하여 사용자 계정과 비밀번호를 검증하여 자원에 대한 접속를 제한 할 수 있습니다.


NGINX HTTP 모든 접속 시 로그인 요청 설정하기

http { } 블럭에 설정 시 모든 가상 호스트의 웹 페이지 접속 시 HTTP 기본 인증을 요구합니다.

[http { auth_basic "runit.cloud HTTP Basic Authentication"; # 로그인 팝업창에서 요청자 표시 내용 auth_basic_user_file /etc/nginx/.htpasswd; # 로그인 시 필요한 사용자 계정과 비밀번호가 저장된 파일 }]

도메인으로 접속 시 로그인 요청 설정하기

server { } 블럭에 설정 시 도메인의 웹 페이지 접속 시 HTTP 기본 인증을 요구합니다.
아래와 같이 설정시 test.runit.cloud 도메인으로 접속 시 HTTP 기본 인증을 요구합니다.

[server { listen 80; listen 443 ssl http2; server_name test.runit.cloud; auth_basic "runit.cloud HTTP Basic Authentication"; # 로그인 팝업창에서 요청자 표시 내용 auth_basic_user_file /etc/nginx/.htpasswd; # 로그인 시 필요한 사용자 계정과 비밀번호가 저장된 파일 location / { ... } }]

특정 페이지 접속 시 로그인 요청 설정하기

location { } 블럭에 설정 시 특정 페이지 접속 시 HTTP 기본 인증을 요구합니다.
아래와 같이 설정 시 test.runit.cloud/google 주소로 접속 시 HTTP 기본 인증을 요구합니다.

server { listen 80; listen 443 ssl http2; server_name test.runit.cloud; location / { ... (생략) } location /google { root /usr/local/src/; charset utf-8; auth_basic "runit.cloud HTTP Basic Authentication"; # 로그인 팝업창에서 요청자 표시 내용 auth_basic_user_file /etc/nginx/.htpasswd; # 로그인 시 필요한 사용자 계정과 비밀번호가 저장된 파일 autoindex on; # 디렉터리 파일 목록 표시 설정 autoindex_exact_size off; # 파일 용량 표시 숨김 설정 (on, off) autoindex_format html; # 인덱스 파일 표시 형식 설정 (html, xml, json, jsonp) autoindex_localtime on; # 인덱스 파일 로컬 시간 표시 설정 (on, off) } }

httpd-tools 설치하기

htpasswd 명령어를 사용하기 위해 httpd-tools 패키지를 먼저 설치합니다.

[dnf install httpd-tools -y]

[root@runit.cloud ~]# dnf install httpd-tools -y Last metadata expiration check: 12:51:53 ago on Sun 20 Dec 2020 02:14:25 AM KST. Installed Packages Name : httpd-tools Version : 2.4.37 Release : 30.module_el8.3.0+561+97fdbbcc Architecture : x86_64 Size : 195 k Source : httpd-2.4.37-30.module_el8.3.0+561+97fdbbcc.src.rpm Repository : @System From repo : appstream Summary : Tools for use with the Apache HTTP Server URL : https://httpd.apache.org/ License : ASL 2.0 Description : The httpd-tools package contains tools which can be used with : the Apache HTTP Server.

.htpasswd 파일 설정하기

사용자 계정과 비밀번호의 정보를 가지고 있는 .htpasswd 파일은 계정:패스워드 와 같은 구조로 이루어져 있습니다.
비밀번호를 암호화해서 저장하는 방법은 리눅스에 내장되어 있는 openssl을 사용하거나 아파치에서 제공하는 httpd-tools 패키지를 설치해서 사용할 수 있습니다.


htpasswd를 사용해서 사용자 계정과 비밀번호 설정하기

/etc/nginx/.htpasswd 파일을 생성하기 위해 -c 옵션을 사용하고, 추가 사용자를 생성할 경우 -c 옵션을 사용하지 않습니다.
아래 명령으로 test 계정을 추가합니다.

[htpasswd -cm /etc/nginx/.htpasswd test]

[root@runit.cloud ~]# htpasswd -cm /etc/nginx/.htpasswd test # test 계정 추가 New password: # test 계정 비밀번호 입력 Re-type new password: # 비밀번호 재입력 Adding password for user test

[WEB] NGINX에서 HTTP 기본 인증을 통한 접속 제한 설정하기
htpasswd 계정 생성하기

위 이미지와 같이 .htpasswd 파일을 cat 명령어로 열어보면 비밀번호가 암호화 된 것을 알 수 있습니다.


openssl 명령어로 사용자 계정과 비밀번호 설정하기

리눅스 서버에 기본적으로 openssl이 설치되어 있어 추가 설치가 필요하지 않습니다. 아래와 같이 사용할 비밀번호를 입력하면 암호화된 텍스트로 변환해서 보여줍니다.

[root@runit.cloud ~]# openssl passwd -1 Password: # 비밀번호 입력 Verifying - Password: # 비밀번호 재입력 $1$mDmfrV6J$iyDoGP.Vmbg6o7c5EXXON.

/etc/nginx/.htpasswd 파일에 vi 에디터를 사용해서 계정과 비밀번호를 입력 후 저장하면 HTTP 기본 인증에 사용할 수 있습니다.

[vi /etc/nginx/.htpasswd]

아래 암호화 코드를 복사해서 /etc/nginx/.htpasswd 파일에 저장합니다.

[test:$1$mDmfrV6J$iyDoGP.Vmbg6o7c5EXXON.]

[WEB] NGINX에서 HTTP 기본 인증을 통한 접속 제한 설정하기
HTTP 기본 인증 로그인 성공 페이지

마무리

NGINX에서 HTTP 기본 인증 설정 작업이 완료되었습니다.
간단한 로그인이 필요한 페이지나 사이트를 NGINX 설정을 통해 쉽게 설정할 수 있습니다.

COMMENTS

이름

가상 머신 생성,1,가상 머신 자동 시작,2,그라파나 비밀번호 초기화,1,데이터베이스 설치,1,리눅스 메모리,1,리눅스 명령어 자동 완성,2,리눅스 백업,1,리눅스 설치,1,리눅스 시스템 언어,1,리눅스 언어 설정,1,리눅스 원격 명령 실행,1,리눅스 프로세스,1,리눅스 한글 설정,1,리눅스 LOCALE,1,리버스 프록시,1,맥북,1,메모리,1,모바일 리다이렉션,1,모바일 페이지,1,백업 스크립트,1,버추얼박스 설치,1,보안 취약점,1,사설 인증서,1,서버 관리,2,소스 컴파일,1,슬랙 사용법,1,슬랙 시작,1,슬랙 초보자 가이드,1,엔진엑스 설치,1,원격 데스크톱 연결,1,웹 접속 제한,1,윈도우 비밀번호 초기화,1,윈도우 전원 옵션,1,윈도우 PATH,1,이미지 압축,1,이미지 용량 줄이기,1,인증서 생성,1,인증서 설치,1,자동 로그인,1,자빅스 한글,1,자체 서명,1,점검 스크립트,1,젠서버 설치,1,커널 삭제,1,콘솔 파란색 설정,1,클립보드 공유,1,파이썬 설치,1,파일 업로드 제한,1,프로세스 관리,1,프로세스 오류,1,한국어 설정,1,한글 설정,1,한영 전환,1,호스트 전용 네트워크,1,ADMIN 초기화,1,APACHE,1,APPLICATIONS,16,Big Sur,1,CentOS,4,CentOS 6,9,CentOS 7,4,CentOS 8,21,CentOS 8 설치,1,CentOS 설치 이미지 다운로드,1,CentOS ISO Download,1,CentOS-Base.repo,1,Citrix Hypervisor,2,DATABASES,1,dnf install httpd,1,DROPPING PACKET,1,GRAFANA,1,htpasswd,1,HTTP 기본 인증,2,HTTPS,1,IPTABLES,1,ISMS,1,ISO 저장소,1,JENNIFER,1,jennifer_admintool,1,jpg smaller,1,LINUX,29,macOS,2,MariaDB,1,MONITORING,3,NF_CONNTRACK,1,NGINX,9,NGINX 설치,1,NGINX SSL 설정,1,openssl 인증서 생성,1,pam 인증,1,passwd,1,PHP,1,PHP-FPM 설치,1,PuTTY,1,PYTHON,1,RSYNC,1,SFTP,1,Shift + Space 한영 전환,1,SLACK,2,slack 사용법,1,SSH 인증,1,SSH 자동 로그인,2,SSHPASS,3,SSL 경고 로그,1,SSL 인증서,1,su,1,SWAP,1,TABLE FULL,1,TABLEAU,1,tinypng,1,TIP,1,TMUX,3,TMUX 설치,2,useradd,1,userdel,1,VirtualBox,4,VIRTUALIZATION,7,VM,3,VMware,1,VMware 무료 라이센스,1,Vmware Fusion,1,wheel 그룹,1,WINDOWS,7,Windows 10,7,XCP-ng,2,XenServer,4,YUM,1,ZABBIX,1,
ltr
item
시스템 엔지니어의 세상: NGINX HTTP 기본 인증을 통한 접속 제한 설정하기
NGINX HTTP 기본 인증을 통한 접속 제한 설정하기
NGINX에서 HTTP 기본 인증 설정 방법을 알아보고, 실습을 통해 쉽게 적용하고 사용할 수 있습니다.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPNjJlgz9vQEp3MPPTrfAlP8PWLKMCf8ZqG0CzML_RvTBnVg10WyLABjquyYQYL-WiX5uX5TCRf2XIfv2uOuepBwlUrr1xCbKHXYSZC71Z4qJF5Yb7aoF_mj0QRd_lUIjPh-6pwYpea6g/s1600/NGINX+HTTP+Basic+Authentication+%25281%2529.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPNjJlgz9vQEp3MPPTrfAlP8PWLKMCf8ZqG0CzML_RvTBnVg10WyLABjquyYQYL-WiX5uX5TCRf2XIfv2uOuepBwlUrr1xCbKHXYSZC71Z4qJF5Yb7aoF_mj0QRd_lUIjPh-6pwYpea6g/s72-c/NGINX+HTTP+Basic+Authentication+%25281%2529.png
시스템 엔지니어의 세상
https://www.runit.cloud/2020/07/basic-http-authentication-with-nginx-on-centos8.html
https://www.runit.cloud/
https://www.runit.cloud/
https://www.runit.cloud/2020/07/basic-http-authentication-with-nginx-on-centos8.html
true
7559506062450536879
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content