수. 7월 23rd, 2025

🔍 Nginx Proxy Manager란?

Nginx Proxy Manager(NPM)는 Nginx 기반의 오픈소스 웹 프록시 관리 도구로, 복잡한 리버스 프록시 설정을 웹 UI로 간편하게 관리할 수 있게 해줍니다.

  • 주요 목적: 다수의 도메인/서비스에 대한 HTTPS 리버스 프록시, SSL 인증서 발급/갱신 자동화
  • 장점: CLI 명령어 없이도 Docker 컨테이너 기반으로 5분 내 구축 가능 ⚡️

✨ 핵심 기능

  1. 직관적인 웹 대시보드

    • 프록시 호스트, SSL, 액세스 제어 시각화 관리
      대시보드 예시
      (출처: 공식 문서)
  2. Let’s Encrypt 통합

    • 1회 클릭으로 SSL 인증서 발급/자동 갱신 🔒
      graph LR
      A[도메인 입력] --> B[Let's Encrypt 선택]
      B --> C[이메일 등록]
      C --> D[자동 HTTPS 적용]
  3. 고급 프록시 기능

    • 커스텀 위치 설정 (예: your.com/blog → WordPress 서버)
    • 웹소켓, HTTP/2 지원
    • IP 기반 액세스 제어 (화이트/블랙리스트)

🛠 설치 가이드 (Docker 기준)

준비물: Docker, Docker Compose 설치 완료 상태

  1. 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
  2. 서비스 실행:

    docker-compose up -d
  3. 접속: http://서버IP:81

    • 초기 로그인: admin@example.com / changeme

⚙️ 기본 설정 따라하기

📌 프록시 호스트 추가

  1. HostsProxy HostsAdd Proxy Host
  2. 필수 입력값:
    • Domain Names: your-domain.com
    • Scheme: http or https
    • Forward Hostname/IP: 내부서버IP (예: 192.168.1.100)
    • Forward Port: 8080

🔐 SSL 적용

  1. SSL 탭 → Let’s Encrypt 선택
  2. 이메일 입력 → Save
    → 인증서 자동 발급 후 HTTPS 강제 적용 활성화!

🛡️ 액세스 제어 (예: 관리자 페이지 제한)

  1. Access ListsAdd Access List
  2. 적용 규칙 설정:
    • Satisfy any: All must pass
    • Add rule: IP Address = 사용자IP (허용 IP 입력)
  3. 프록시 호스트 편집 → 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]  # 오류 발생 시 필수!

❌ 대표적 문제 해결

  1. 502 Bad Gateway

    • 대상 서버 실행 확인: curl http://내부서버IP:포트
    • 방화벽 체크: ufw allow 8080 (Ubuntu 기준)
  2. SSL 인증서 갱신 실패

    • 포트 80/443 개방 확인 (Let’s Encrypt 인증 필요)
    • 볼륨 권한: chown -R 1000:1000 ./letsencrypt
  3. 도메인 연결 안 됨

    • DNS 설정 확인: dig your-domain.com
    • 호스트 파일 테스트: 로컬에서 서버IP your-domain.com 추가

✅ 결론: 왜 NPM인가?

전통적 Nginx Nginx Proxy Manager
CLI 설정 복잡 웹 UI 클릭 몇 번
수동 인증서 갱신 자동 갱신 ⚡️
고급 설정 어려움 초보자도 10분 완성 🚀

> 💡 적합한 사용자:
> – 홈랩/소규모 서비스 운영자
> – Kubernetes Ingress보다 가벼운 솔루션 필요 시
> – SSL, 도메인 관리에 시간 낭비하고 싶지 않은 분!

지금 당장 Docker 명령어 한 줄로 시작해보세요!

mkdir npm && cd npm && nano docker-compose.yml  # 위 설정 붙여넣고 실행!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다