3ec7e76f7c
- livekit/nginx.livekit.conf.example: 도커 nginx용 wss 리버스 프록시 참조 설정 추가 (docker DNS resolver+변수 proxy_pass로 부팅 순서 의존 제거, TLS 종단·WS 업그레이드) - DEPLOY.md: AWS EC2+도커 nginx 4-1장 추가, 참조 설정 파일로 연결 - .env.production.example: LiveKit 섹션을 셀프호스팅 우선으로 정리, 키 생성 원라이너 추가 애플리케이션 코드 변경 없음(백엔드 토큰 오프라인 서명·프론트 env 주입뿐). 운영은 selfhost-livekit 프로파일 + EC2 보안그룹/EIP 구성으로 가동. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
75 lines
3.2 KiB
Plaintext
75 lines
3.2 KiB
Plaintext
# LiveKit 시그널링(wss) 리버스 프록시 — 도커 컨테이너 nginx 용 참조 설정
|
|
#
|
|
# 사용법:
|
|
# 1) 이 파일을 운영 nginx 의 conf.d 에 복사: nginx.livekit.conf (.example 제거)
|
|
# 2) <도메인> / 인증서 경로를 실제 값으로 치환
|
|
# 3) nginx 컨테이너를 base compose 의 외부 `proxy` 네트워크에 join (아래 주석 참고)
|
|
# 4) docker compose ... exec nginx nginx -s reload (또는 컨테이너 재기동)
|
|
#
|
|
# 전제(자세한 내용: livekit/DEPLOY.md 4·4-1장):
|
|
# - LiveKit 컨테이너는 `selfhost-livekit` 프로파일로 기동되어 `proxy` 네트워크에 있다.
|
|
# - nginx 컨테이너도 같은 `proxy` 네트워크에 있어야 `livekit` 이름이 해석된다.
|
|
# (호스트 설치형 nginx 라면 docker-compose 의 livekit 7880 을 ports 로 publish 한 뒤
|
|
# proxy_pass 를 http://127.0.0.1:7880 으로 바꾼다.)
|
|
# - 미디어(RTC: 7881/tcp, 7882/udp)는 이 프록시를 거치지 않고 서버 공인 IP 로 직접 통신한다.
|
|
|
|
# HTTP → HTTPS 강제 리다이렉트 (Let's Encrypt 갱신 경로는 통과)
|
|
server {
|
|
listen 80;
|
|
server_name livekit.<도메인>;
|
|
|
|
location /.well-known/acme-challenge/ {
|
|
root /var/www/certbot;
|
|
}
|
|
location / {
|
|
return 301 https://$host$request_uri;
|
|
}
|
|
}
|
|
|
|
# 시그널링(wss) 종단 → LiveKit 7880
|
|
server {
|
|
listen 443 ssl;
|
|
http2 on;
|
|
server_name livekit.<도메인>;
|
|
|
|
# 이 서브도메인용 인증서 (certbot 등으로 발급)
|
|
ssl_certificate /etc/letsencrypt/live/livekit.<도메인>/fullchain.pem;
|
|
ssl_certificate_key /etc/letsencrypt/live/livekit.<도메인>/privkey.pem;
|
|
|
|
# 도커 내장 DNS — `livekit` 업스트림을 런타임에 해석해 부팅 순서 의존을 제거한다.
|
|
# (이 줄과 변수 proxy_pass 가 없으면 livekit 컨테이너가 늦게 뜰 때 nginx 가 부팅 실패한다.)
|
|
resolver 127.0.0.11 valid=30s;
|
|
|
|
location / {
|
|
set $lk http://livekit:7880; # 변수로 받아 런타임 해석
|
|
proxy_pass $lk;
|
|
|
|
# WebSocket 업그레이드 (시그널링)
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
|
|
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; # TLS 종단이므로 백엔드에 https 알림
|
|
|
|
# 장수명 WebSocket 유지
|
|
proxy_read_timeout 600s;
|
|
proxy_send_timeout 600s;
|
|
}
|
|
}
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# nginx 컨테이너를 `proxy` 네트워크에 연결하는 예 (운영 nginx 의 compose 발췌):
|
|
#
|
|
# services:
|
|
# nginx:
|
|
# # ...
|
|
# networks:
|
|
# - proxy # base compose 의 external proxy 네트워크
|
|
# networks:
|
|
# proxy:
|
|
# external: true
|
|
# ─────────────────────────────────────────────────────────────────────────────
|