프록시 호스트 관리 (Proxy Host Management)
Nginx Proxy Guard의 핵심 기능인 프록시 호스트 관리 기능을 상세히 설명합니다.
기본 기능
다중 도메인 지원
- SNI 지원: 하나의 호스트에 여러 도메인 연결
- 와일드카드:
*.example.com형식 지원 - 서브도메인: 독립적인 서브도메인 설정
포워딩 설정
| 설정 | 설명 |
|---|---|
| 프로토콜 | HTTP 또는 HTTPS |
| 호스트명 | 백엔드 서버 주소 |
| 포트 | 백엔드 서버 포트 |
| 경로 | 프록시 경로 (기본: /) |
WebSocket 지원
실시간 양방향 통신을 위한 WebSocket 업그레이드를 완벽하게 지원합니다.
- 자동 Connection Upgrade
- 커스텀 헤더 전달
- 타임아웃 설정
캐싱
정적 리소스에 대한 캐싱 설정을 지원합니다.
- 캐시 활성화/비활성화
- 캐시 유효 기간 설정
- 캐시 키 커스터마이징
고급 설정
커스텀 Location 블록
Nginx location 블록을 직접 추가하여 세밀한 설정이 가능합니다.
# 특정 경로에 대한 설정
location /api/ {
proxy_pass http://api-server:8080;
proxy_read_timeout 300s;
}
# 정적 파일 처리
location /static/ {
alias /var/www/static/;
expires 30d;
}
Advanced Configuration
Nginx 설정을 직접 편집할 수 있습니다.
주의: 보안을 위해 다음 지시어는 차단됩니다:
load_module- 외부 모듈 로드lua_*,perl_*,js_*- 스크립트 실행- 쉘 명령어가 포함된
proxy_pass
설정 예시
# 요청 타임아웃 설정
proxy_connect_timeout 60s;
proxy_read_timeout 120s;
proxy_send_timeout 60s;
# 버퍼 설정
proxy_buffer_size 128k;
proxy_buffers 4 256k;
# 헤더 설정
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Docker 컨테이너 탐색
Docker 환경에서 프록시 대상 서버를 쉽게 선택할 수 있습니다.
자동 탐색
- 실행 중인 Docker 컨테이너 자동 탐색
- 컨테이너 이름, 이미지, 네트워크 정보 표시
- NPG 자체 컨테이너(npg-*)는 자동 제외
- 컨테이너의 IP 주소와 포트를 클릭하여 자동 입력
컨테이너 정보
| 필드 | 설명 |
|---|---|
| 이름 | 컨테이너 이름 |
| 이미지 | Docker 이미지 |
| 상태 | 실행 상태 |
| 네트워크 | 연결된 네트워크 및 IP |
| 포트 | 노출된 포트 |
호스트 복제 (Clone)
기존 프록시 호스트를 복제하여 새로운 호스트를 빠르게 생성할 수 있습니다.
복제 기능
- 원본의 모든 설정 복제: WAF, 봇 필터, GeoIP, Rate Limiting, 캐싱, 고급 설정 등
- 새 도메인 지정: 복제 시 새로운 도메인 이름 입력
- 포워딩 오버라이드: 대상 서버 주소/포트 변경 가능
- 인증서 선택: 기존 인증서 사용, Let's Encrypt 새 발급, 자체 서명 중 선택
복제 시 설정 가능한 옵션
| 옵션 | 설명 | 기본값 |
|---|---|---|
| 도메인 | 새 호스트의 도메인 이름 (필수) | - |
| 인증서 | 인증서 연결 방식 | 없음 |
| 프로토콜 | HTTP 또는 HTTPS | 원본과 동일 |
| 호스트 | 백엔드 서버 주소 | 원본과 동일 |
| 포트 | 백엔드 서버 포트 | 원본과 동일 |
Upstream 로드 밸런싱
하나의 프록시 호스트에 다중 백엔드 서버를 구성하여 로드 밸런싱과 고가용성을 제공합니다.
로드 밸런싱 방식
| 방식 | 설명 |
|---|---|
| Round Robin | 순차적으로 서버에 요청 분배 (기본값) |
| Least Connections | 활성 연결이 가장 적은 서버에 분배 |
| IP Hash | 클라이언트 IP 기반 고정 서버 할당 (세션 유지) |
| Random | 무작위 서버 선택 |
Upstream 서버 설정
| 설정 | 설명 | 기본값 |
|---|---|---|
| 주소 | 백엔드 서버 주소 | - |
| 포트 | 백엔드 서버 포트 | - |
| 가중치 | 가중치 (높을수록 많은 트래픽) | 1 |
| 최대 실패 | 실패 허용 횟수 | 1 |
| 실패 타임아웃 | 실패 후 비활성화 시간 (초) | 10 |
| 백업 서버 | 백업 서버 여부 | false |
헬스 체크
백엔드 서버의 상태를 주기적으로 확인하여 장애 서버를 자동으로 제외합니다.
| 설정 | 설명 | 기본값 |
|---|---|---|
| 활성화 | 헬스 체크 사용 여부 | false |
| 간격 | 체크 주기 (초) | 30 |
| 타임아웃 | 응답 대기 시간 (초) | 5 |
| 경로 | HTTP 헬스 체크 경로 | / |
| 기대 상태 코드 | 정상으로 판단할 HTTP 상태 코드 | 200 |
Keepalive
- Keepalive 연결 수: Upstream 서버와의 유휴 연결 수 설정
- 연결 재사용으로 성능 향상
- 기본값: 32개 연결
호스트 관리
즐겨찾기 / 고정
자주 관리하는 호스트를 목록 상단에 고정할 수 있습니다.
- 별표 클릭으로 즐겨찾기 토글
- 즐겨찾기 호스트는 목록 최상단에 표시
- 정렬 상태와 무관하게 항상 상단 유지
활성화/비활성화
호스트를 삭제하지 않고 일시적으로 비활성화할 수 있습니다.
- 비활성화 시 해당 호스트로의 트래픽 차단
- 설정 보존
- 빠른 활성화/비활성화 전환
설정 동기화
모든 프록시 호스트의 Nginx 설정을 동기화합니다.
- 설정 변경 후 일괄 적용
- 불일치 설정 수정
- Nginx 재시작 없이 적용
호스트 테스트
프록시 설정이 올바르게 동작하는지 테스트합니다.
- 백엔드 연결 확인
- SSL/TLS 설정 검증
- 응답 상태 확인
보안 설정 통합
각 프록시 호스트별로 독립적인 보안 설정을 적용할 수 있습니다.
호스트별 보안 기능
| 기능 | 설명 |
|---|---|
| WAF | 호스트별 WAF 모드 및 Paranoia Level |
| Rate Limiting | 호스트별 요청 제한 |
| Fail2ban | 호스트별 자동 차단 |
| 봇 필터 | 호스트별 봇 차단 규칙 |
| GeoIP | 호스트별 지역 제한 |
| URI 차단 | 호스트별 경로 차단 |
| 보안 헤더 | 호스트별 헤더 설정 |
| 챌린지 | 호스트별 CAPTCHA 설정 |
| 클라우드 차단 | 호스트별 클라우드 프로바이더 차단 |
SSL/TLS 설정
인증서 연결
- Let's Encrypt 인증서 자동 연결
- 커스텀 인증서 업로드
- 자체 서명 인증서 생성
Force HTTPS
HTTP 요청을 HTTPS로 자동 리다이렉트합니다.
HTTP/2 & HTTP/3
- HTTP/2 기본 활성화
- HTTP/3 (QUIC) 지원
- ALPN 프로토콜 협상
모범 사례
새 호스트 생성 시
- 기본 프록시 설정 구성
- SSL 인증서 발급/연결
- 보안 설정 (WAF, 봇 필터 등) 적용
- 테스트 후 활성화
문제 해결
- 502 Bad Gateway: 백엔드 서버 연결 확인
- 504 Gateway Timeout: 타임아웃 설정 증가
- SSL 오류: 인증서 유효성 및 설정 확인