간혹 홈페이지를 접속 하다보면 따로 로그인 페이지가 나타나는게 아니라 alert 창으로 로그인 화면이 뜨고 로그인을 해야 접속이 가능한 홈페이지를 볼 수 있다. 사내 내부 망 페이지를 구축하면서 알게된 내용을 정리한다.

포스트 내용은 nginx가 이미 설치되어 있다는 전제하에 설명하는 내용입니다.

환경 정보

ubuntu 18.04.3 LTS / nginx 1.14.0 /AWS

설치

apache2-utils를 먼저 설치해준다.

이때 실제 아파치를 사용하는 것이 아닌 , apache2-utils에 있는 계정정보 생성기능을 사용하려고 하는 것이라 추후 계정 정보를 추가할 일이 없다면 유틸은 제거해도 된다.

$ apt-get install apache2-utils

이것만 기본 설치는 끝


계정 정보 생성하기

사이트에 접속 할 수 있는 계정과 비밀번호를 추가하기

$ htpasswd -c /etc/nginx/.htpasswd 계정아이디
New password : 사이트 접속 비밀번호
Re-type new Password : 다시 한번 입력

정상적으로 등록 되었는지 확인하기

$ cat /etc/nginx/.htpasswd

이용자를 추가하는 경우도 똑같은 과정을 반복하면 된다.

이걸로 계정 정보는 생성 완료.


Nginx 설정하기

nginx를 설치한 설정 파일을 열어준다.

기본 설정 파일의 위치는 /etc/nginx/sites-enabled/default

$ nano /etc/nginx/sites-enabled/default

server 부분에 하단과 같은 내용 추가

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

모든 도메인 접근시 로그인하도록 구성

server 하단에 설정한다.

server {
		listen 80;
		server_name localhost;
		auth_basic "Security"
		auth_basic_user_file  /etc/nginx/.htpasswd;
		location / {
			...	
		}
}

특정 페이지만 로그인하도록 구성

location 하단에 설정한다.

server {
		listen 80;
		server_name localhost;
		location /test/ {
			auth_basic "Security"
			auth_basic_user_file  /etc/nginx/.htpasswd;
		}
}

모든 작업이 끝나면 nginx 서버를 꼭 리스타트 시켜준다.

$ service nginx restart

끝.