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)로 관리하고 코드에 하드코딩 금지