발행일: 2026-10-06(화) 11:44
홈›도서›하루 30분 n8n ④›Nginx 리버스 프록시와 HTTPS 설정
DAY 4★★☆

Nginx 리버스 프록시와 HTTPS 설정

📖 이론10분
🛠️ 실습15분
🎯 미션5분

"보안은 제품이 아니라 프로세스이다."

— 브루스 슈나이어 (Bruce Schneier, 보안 전문가)
🎯 오늘의 학습 목표
  • Nginx 리버스 프록시 개념을 이해하고 설정할 수 있다.
  • Let's Encrypt로 무료 SSL 인증서를 발급할 수 있다.
  • WebSocket 헤더 설정의 중요성을 이해하고 적용할 수 있다.
💡 HTTP는 엽서에 편지 쓰는 것(배달 중 누구든 읽을 수 있음), HTTPS는 봉투에 넣고 봉인하는 것(받는 사람 외엔 아무도 못 봄)이에요. n8n에는 API 키, 데이터베이스 비밀번호, 업무 데이터가 흐르므로 반드시 HTTPS를 설정해야 합니다.
📊 DNS A 레코드 설정
타입이름값TTL
An8n서버_IP_주소300
⚠️ DNS 반영에는 최대 30분~1시간이 걸립니다. ping n8n.mycompany.com 으로 IP가 맞게 연결됐는지 확인 후 다음 단계를 진행하세요.
Nginx 및 Certbot 설치
bash
apt install nginx -y
systemctl start nginx
systemctl enable nginx
nginx -t
apt install certbot python3-certbot-nginx -y
certbot --nginx -d n8n.mycompany.com
Nginx 설정 파일 작성
nginx
# HTTP를 HTTPS로 자동 리다이렉트
server {
    listen 80;
    server_name n8n.mycompany.com;
    return 301 https://$server_name$request_uri;
}

# HTTPS 서버
server {
    listen 443 ssl;
    server_name n8n.mycompany.com;

    ssl_certificate /etc/letsencrypt/live/n8n.mycompany.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/n8n.mycompany.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://localhost:5678;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket 지원 (n8n 실시간 업데이트에 필수)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # 타임아웃 설정 (긴 워크플로우 실행을 위해 충분히 길게)
        proxy_read_timeout 1200s;
        proxy_send_timeout 1200s;
        proxy_connect_timeout 60s;
        proxy_buffering off;
        proxy_cache off;
    }
}
설정 활성화 및 n8n 재시작
bash
ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t
systemctl reload nginx

cd ~/n8n
# .env에서 N8N_HOST와 WEBHOOK_URL을 실제 도메인으로 수정 후
docker compose restart n8n
🛠️ DAY 4 실습
Step 1도메인 DNS 설정
  1. 도메인 관리 패널에서 A 레코드 추가: n8n → 서버 IP
  2. ping n8n.mycompany.com 으로 DNS 반영 확인
  3. 반영 전까지 최대 1시간 대기
Step 2Nginx + SSL 설정
  1. apt install nginx certbot python3-certbot-nginx -y
  2. certbot --nginx -d n8n.mycompany.com 실행 후 이메일 입력 및 약관 동의
  3. /etc/nginx/sites-available/n8n 파일 작성 (위 내용)
  4. ln -s 심볼릭 링크 생성 → nginx -t → systemctl reload nginx
Step 3.env 업데이트 및 확인
  1. .env에서 N8N_HOST, N8N_PROTOCOL, WEBHOOK_URL을 실제 도메인으로 수정
  2. docker compose restart n8n
  3. https://n8n.mycompany.com 접속 확인 (자물쇠 아이콘 확인)
🚀 DAY 4 미션

도메인으로 HTTPS n8n 접속을 완성하세요. 주소창에 자물쇠 아이콘이 표시되어야 합니다.

☑️ 미션 체크리스트
  • 도메인 A 레코드 설정 완료
  • Nginx 설치 및 설정 완료 (nginx -t 통과)
  • Let's Encrypt 인증서 발급 완료
  • https://도메인 으로 접속 성공
💡 힌트: WebSocket 헤더(Upgrade, Connection)가 빠지면 n8n 편집 중 연결 끊김 오류가 발생합니다. 반드시 포함하세요.
🎯 성공 기준: 브라우저 주소창에 자물쇠 아이콘이 표시되고 https 로 n8n에 접속 가능한 상태
← 이전
Docker Compose로 n8n 올리기
다음 →
n8n 1.90+ 핵심 변경사항 이해하기
← 목차로 돌아가기