🔍 Nginx Proxy Manager란?
Nginx Proxy Manager(NPM)는 Nginx 기반의 오픈소스 웹 프록시 관리 도구로, 복잡한 리버스 프록시 설정을 웹 UI로 간편하게 관리할 수 있게 해줍니다.
- 주요 목적: 다수의 도메인/서비스에 대한 HTTPS 리버스 프록시, SSL 인증서 발급/갱신 자동화
- 장점: CLI 명령어 없이도 Docker 컨테이너 기반으로 5분 내 구축 가능 ⚡️
✨ 핵심 기능
-
직관적인 웹 대시보드
- 프록시 호스트, SSL, 액세스 제어 시각화 관리
(출처: 공식 문서)
- 프록시 호스트, SSL, 액세스 제어 시각화 관리
-
Let’s Encrypt 통합
- 1회 클릭으로 SSL 인증서 발급/자동 갱신 🔒
graph LR A[도메인 입력] --> B[Let's Encrypt 선택] B --> C[이메일 등록] C --> D[자동 HTTPS 적용]
- 1회 클릭으로 SSL 인증서 발급/자동 갱신 🔒
-
고급 프록시 기능
- 커스텀 위치 설정 (예:
your.com/blog
→ WordPress 서버) - 웹소켓, HTTP/2 지원
- IP 기반 액세스 제어 (화이트/블랙리스트)
- 커스텀 위치 설정 (예:
🛠 설치 가이드 (Docker 기준)
준비물: Docker, Docker Compose 설치 완료 상태
-
docker-compose.yml
파일 생성:version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' ports: - '80:80' - '443:443' - '81:81' # 관리 포트 volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt
-
서비스 실행:
docker-compose up -d
-
접속:
http://서버IP:81
- 초기 로그인:
admin@example.com
/changeme
- 초기 로그인:
⚙️ 기본 설정 따라하기
📌 프록시 호스트 추가
- Hosts → Proxy Hosts → Add Proxy Host
- 필수 입력값:
- Domain Names:
your-domain.com
- Scheme:
http
orhttps
- Forward Hostname/IP:
내부서버IP
(예:192.168.1.100
) - Forward Port:
8080
- Domain Names:
🔐 SSL 적용
- SSL 탭 → Let’s Encrypt 선택
- 이메일 입력 → Save
→ 인증서 자동 발급 후 HTTPS 강제 적용 활성화!
🛡️ 액세스 제어 (예: 관리자 페이지 제한)
- Access Lists → Add Access List
- 적용 규칙 설정:
- Satisfy any: All must pass
- Add rule:
IP Address
=사용자IP
(허용 IP 입력)
- 프록시 호스트 편집 → Access List 탭에서 생성한 규칙 선택
🧰 고급 활용 팁
🔄 다중 애플리케이션 연동
- 경로 기반 라우팅:
service1.your.com
→ 서버A:3000
service2.your.com/blog
→ 서버B:8080
📊 모니터링 설정
Prometheus + Grafana 연동:
# docker-compose.yml 추가
environment:
ENABLE_METRICS: 'true' # http://npm:81/metrics 에 데이터 노출
🚨 실시간 로그 확인
docker logs -f [컨테이너ID] # 오류 발생 시 필수!
❌ 대표적 문제 해결
-
502 Bad Gateway
- 대상 서버 실행 확인:
curl http://내부서버IP:포트
- 방화벽 체크:
ufw allow 8080
(Ubuntu 기준)
- 대상 서버 실행 확인:
-
SSL 인증서 갱신 실패
- 포트 80/443 개방 확인 (Let’s Encrypt 인증 필요)
- 볼륨 권한:
chown -R 1000:1000 ./letsencrypt
-
도메인 연결 안 됨
- DNS 설정 확인:
dig your-domain.com
- 호스트 파일 테스트: 로컬에서
서버IP your-domain.com
추가
- DNS 설정 확인:
✅ 결론: 왜 NPM인가?
전통적 Nginx | Nginx Proxy Manager |
---|---|
CLI 설정 복잡 | 웹 UI 클릭 몇 번 ✨ |
수동 인증서 갱신 | 자동 갱신 ⚡️ |
고급 설정 어려움 | 초보자도 10분 완성 🚀 |
> 💡 적합한 사용자:
> – 홈랩/소규모 서비스 운영자
> – Kubernetes Ingress보다 가벼운 솔루션 필요 시
> – SSL, 도메인 관리에 시간 낭비하고 싶지 않은 분!
지금 당장 Docker 명령어 한 줄로 시작해보세요!
mkdir npm && cd npm && nano docker-compose.yml # 위 설정 붙여넣고 실행!