Nginx Basic Auth — 관리자 페이지 보호

Nginx 레이어에서 /admin 경로를 HTTP Basic Auth로 1차 보호하는 방법

마지막 수정: 2026-05

Nginx Basic Auth — 관리자 페이지 보호

개요

/admin/** 경로를 Nginx에서 HTTP Basic Auth로 보호한다. Spring Security 인가와 별개로 Nginx 레이어에서 먼저 차단하는 1차 방어선이다. IP 화이트리스트는 모바일 핫스팟 등 유동 IP 환경에서 관리가 어려우므로 Basic Auth를 사용한다.


.htpasswd 생성

# apache2-utils 설치 (최초 1회)
sudo yum install -y httpd-tools   # Amazon Linux
sudo apt install -y apache2-utils # Ubuntu

# .htpasswd 생성 (admin 계정)
sudo htpasswd -c /etc/nginx/.htpasswd admin
# 이후 패스워드 입력 프롬프트

Nginx 설정

# /etc/nginx/conf.d/site.conf

location /admin {
    auth_basic "Admin";
    auth_basic_user_file /etc/nginx/.htpasswd;

    limit_req zone=admin burst=5 nodelay;

    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

설정 적용:

sudo nginx -t && sudo systemctl reload nginx

주의사항

  • Basic Auth는 Base64 인코딩이므로 HTTPS 환경에서만 안전하다 (평문 전송 위험)
  • 비밀번호 변경 시 .htpasswd 파일 업데이트 후 nginx reload 필요
  • 비밀번호는 환경변수(ADMIN_PASSWORD)로 관리하고 코드에 하드코딩 금지