Nginx Proxy GuardNginx Proxy Guard

설정 가이드

Nginx Proxy Guard의 환경 변수 및 초기 설정에 대해 안내합니다.

환경 변수 (Environment Variables)

.env 파일을 통해 시스템의 주요 설정을 변경할 수 있습니다.

필수 설정

변수설명기본값필수
DB_PASSWORD데이터베이스 비밀번호-O
JWT_SECRETJWT 서명 시크릿 (32자 hex)-O

데이터베이스 설정

변수설명기본값
DB_USERDB 사용자postgres
DB_NAMEDB 이름nginx_proxy_guard
DB_HOSTDB 호스트db
DB_PORTDB 포트5432

GeoIP 설정

변수설명기본값
MAXMIND_LICENSE_KEYMaxMind 라이선스 키-
MAXMIND_ACCOUNT_IDMaxMind 계정 ID-

ACME (Let's Encrypt) 설정

변수설명기본값
ACME_EMAILLet's Encrypt 이메일-
ACME_STAGING스테이징 모드false

시스템 설정

변수설명기본값
ENVIRONMENT환경 (production/development)production
TZ타임존UTC
CORS_ALLOWED_ORIGINSCORS 허용 출처https://localhost:81

Rate Limiting 설정

변수설명기본값
RATE_LIMIT_ENABLEDRate Limiting 활성화true
RATE_LIMIT_RPS초당 요청 수100.0

로깅 설정

변수설명기본값
LOG_COLLECTION로그 수집 활성화true
ENABLE_DOCKER_LOGSDocker 로그 수집true

Nginx 연동 설정

변수설명기본값
NGINX_CONTAINERNginx 컨테이너 이름npg-proxy
NGINX_STATUS_URLNginx 상태 URLhttp://nginx:8080/nginx_status
NGINX_ACCESS_LOG액세스 로그 경로/var/log/nginx/access.log

백업 설정

변수설명기본값
BACKUP_PATH백업 저장 경로/app/data/backups

데이터베이스 구조

핵심 테이블

테이블설명
users사용자 인증 (TOTP 2FA 포함)
api_tokensAPI 인증 토큰
audit_logs관리자 활동 감사 로그

프록시 설정 테이블

테이블설명
proxy_hosts프록시 호스트 설정
certificatesSSL/TLS 인증서
dns_providersDNS Provider 설정
access_listsIP 접근 제어 목록
redirect_hostsURL 리다이렉트 규칙

보안 설정 테이블

테이블설명
rate_limitsRate Limiting 설정
fail2ban_configsFail2ban 설정
bot_filters봇 필터링 설정
geo_restrictionsGeoIP 지역 제한
waf_rule_exclusionsWAF 규칙 예외 (호스트별)
global_waf_rule_exclusionsWAF 규칙 예외 (전역)
banned_ips차단된 IP
ip_ban_historyIP 차단 이력
security_headers보안 헤더 설정
uri_blocksURI 차단 규칙
global_uri_blocks전역 URI 차단
challenge_configsCAPTCHA 챌린지 설정
challenge_tokens챌린지 인증 토큰
cloud_provider_blocks클라우드 프로바이더 차단

로깅 테이블

테이블설명
logs통합 로그 (월별 파티션)
system_logs시스템 로그 (월별 파티션)
geoip_historyGeoIP 업데이트 이력

설정 테이블

테이블설명
global_settings전역 Nginx 설정
system_settings시스템 설정
backups백업 메타데이터
waf_rule_snapshotsWAF 설정 스냅샷

문제 해결 (Troubleshooting)

인증서 발급 실패

  1. DNS 설정 확인 (도메인이 서버 IP를 가리키는지)
  2. DNS Provider API 토큰 권한 확인
  3. Let's Encrypt Rate Limit 확인
  4. 스테이징 환경(ACME_STAGING=true)에서 먼저 테스트
# 인증서 로그 확인
docker logs npg-api | grep -i cert

WAF 오탐 (False Positive)

  1. WAF 테스트 기능으로 어떤 룰이 트리거되는지 확인
  2. 해당 룰 ID를 호스트별 예외 목록에 추가
  3. 탐지(Detection) 모드로 변경하여 모니터링 후 차단 모드 적용

GeoIP 작동 안함

  1. MaxMind 라이선스 키 확인
  2. GeoIP 데이터베이스 존재 확인 (/etc/nginx/geoip/)
  3. 시스템 설정에서 GeoIP 상태 확인
  4. 수동 업데이트 실행

로그 조회가 느림

  1. 로그 보존 기간 단축 (시스템 설정)
  2. 필터 범위 축소
  3. 파티션 상태 확인
# 파티션 확인
docker exec -it npg-db psql -U postgres -d nginx_proxy_guard -c "SELECT tablename FROM pg_tables WHERE tablename LIKE 'logs_%';"

백엔드 연결 실패

  1. 백엔드 서버 상태 확인
  2. 네트워크 연결 확인
  3. 방화벽 설정 확인
  4. Docker 네트워크 확인
# 네트워크 연결 테스트
docker exec -it npg-proxy curl -v http://backend:port

높은 메모리 사용량

  1. 로그 보관 기간 축소
  2. 오래된 파티션 정리
  3. Nginx 워커 프로세스 수 조정

보안 권장 사항

필수 변경 사항

  1. 기본 비밀번호 변경: 첫 로그인 후 즉시 변경

  2. 강력한 시크릿 생성:

    # DB 비밀번호
    openssl rand -base64 24
    
    # JWT 시크릿
    openssl rand -hex 32
    
  3. 2FA 활성화: TOTP 기반 2단계 인증 설정

네트워크 보안

  1. 관리 포트(81) 접근 제한
  2. 내부 네트워크만 DB/Redis 접근 허용
  3. HTTPS 강제 사용

API 보안

  1. API 토큰 IP 제한 설정
  2. 최소 권한 원칙 적용
  3. 토큰 만료일 설정
Nginx Proxy Guard - 차세대 Nginx 프록시 관리 시스템