"보안은 제품이 아니라 프로세스이다."
— 브루스 슈나이어 (Bruce Schneier, 보안 전문가)🎯 오늘의 학습 목표- Nginx 리버스 프록시 개념을 이해하고 설정할 수 있다.
- Let's Encrypt로 무료 SSL 인증서를 발급할 수 있다.
- WebSocket 헤더 설정의 중요성을 이해하고 적용할 수 있다.
💡 HTTP는 엽서에 편지 쓰는 것(배달 중 누구든 읽을 수 있음), HTTPS는 봉투에 넣고 봉인하는 것(받는 사람 외엔 아무도 못 봄)이에요. n8n에는 API 키, 데이터베이스 비밀번호, 업무 데이터가 흐르므로 반드시 HTTPS를 설정해야 합니다.
⚠️ 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 설정
- 도메인 관리 패널에서 A 레코드 추가: n8n → 서버 IP
- ping n8n.mycompany.com 으로 DNS 반영 확인
- 반영 전까지 최대 1시간 대기
Step 2Nginx + SSL 설정
- apt install nginx certbot python3-certbot-nginx -y
- certbot --nginx -d n8n.mycompany.com 실행 후 이메일 입력 및 약관 동의
- /etc/nginx/sites-available/n8n 파일 작성 (위 내용)
- ln -s 심볼릭 링크 생성 → nginx -t → systemctl reload nginx
Step 3.env 업데이트 및 확인
- .env에서 N8N_HOST, N8N_PROTOCOL, WEBHOOK_URL을 실제 도메인으로 수정
- docker compose restart n8n
- https://n8n.mycompany.com 접속 확인 (자물쇠 아이콘 확인)
🚀 DAY 4 미션도메인으로 HTTPS n8n 접속을 완성하세요. 주소창에 자물쇠 아이콘이 표시되어야 합니다.
☑️ 미션 체크리스트- 도메인 A 레코드 설정 완료
- Nginx 설치 및 설정 완료 (nginx -t 통과)
- Let's Encrypt 인증서 발급 완료
- https://도메인 으로 접속 성공
💡 힌트: WebSocket 헤더(Upgrade, Connection)가 빠지면 n8n 편집 중 연결 끊김 오류가 발생합니다. 반드시 포함하세요.
🎯 성공 기준: 브라우저 주소창에 자물쇠 아이콘이 표시되고 https 로 n8n에 접속 가능한 상태