nginx의 BASIC 인증

nginx 서버를 설정하여 BASIC 인증



실행 환경



(GCP VM에서 수행)
우분투: 18.04
nginx: 1.19.1

구현



이전과 nginx의 기본 conf 파일이 변경된 패턴.
어느 기사를 모방해도 능숙하지 않고, 번거로워 버렸으므로 기록해 둔다.

nginx 설치


$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install nginx

인증용 username 및 password 설정



.htpasswd 파일을/etc/nginx/이하에 배치. (일반적으로 여기)
두 번째 줄은 htpasswd 명령을 사용하여 패키지 설치
그리고, 등록하고 싶은 username과 password를 설정한다.
$ sudo touch /etc/nginx/.htpasswd
$ sudo apt-get install apache2-utils
$ sudo htpasswd -c -b /etc/nginx/.htpasswd [USERNAME] [PASSWORD]

덧붙여서, htpasswd 커멘드에서는, -c로 새롭게 .htpasswd 파일을 생성하므로, 2회째 이후에 유저를 추가할 때에는 제외한다.

conf 파일



/etc/nginx/conf.d 이하의 *.conf 가 include 되는 설정이 되어 있을 것이므로, 확장자의 전의 이름은 무엇이든 좋다.
여기에서는 hoge.conf 로 둔다.
- 80번 포트에서 연결 대기
- root로 지정한 디렉토리 다음 페이지 표시
- 표시하고 싶은 html 파일은, index 라벨을 붙여 등록해 둔다(←개인적 망각 포인트)
- location / 다음 auth_basic 는 인증 대화 상자 설정
- auth_basic_user_file 에서는 자격 증명의 설정 파일을 지정.
/etc/nginx/conf.d$ cat hoge.conf 
server {
    listen       80 default_server;
    server_name  0.0.0.0;
    root         /var/www/html;
    index index.html index.htm index.nginx-debian.html;
    location / {
            auth_basic "Please Login";
            auth_basic_user_file /etc/nginx/.htpasswd; 
    }
}

conf 파일 확인



다음 명령으로 conf 파일의 문법을 확인합니다.
아래 두 줄 같은 표시가 나오면 OK :)
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

로딩



지금 실시한 설정을 읽어들여 표시시킨다.
$ sudo nginx -s reload

잘 못한다면,
/etc/nginx/nginx.conf 에서, /etc/nginx/sites-enabled/ 를 include 하는 설정을 지우는 것을 시도해 주었으면 한다.

이번에는 로그인 시도의 횟수 제한도 마련해 보려고 생각합니다.
비밀번호 목록에있는 비밀번호를 등록하지 않으려고합니다

좋은 웹페이지 즐겨찾기