본문 바로가기
메모장

Nginx 기반 동영상 콘텐츠 서버 구축 #1

by 마이클장 2025. 3. 27.

1. Nginx 기반 동영상 콘텐츠 서버 구축

🔹 1️⃣ 기본 구성

서버에 Nginx만 설치하고, /var/www/html/videos/ 같은 디렉터리에 동영상을 업로드한 후, 웹사이트에서 해당 파일을 직접 제공하는 방식입니다.

📌 설정 방법 (Ubuntu 기준)

sudo apt update && sudo apt install nginx -y
sudo mkdir -p /var/www/html/videos
sudo chmod -R 755 /var/www/html/videos

 

📌 동영상 업로드 경로 예시

sudo cp sample.mp4 /var/www/html/videos/

 

📌 Nginx 설정 수정 (/etc/nginx/sites-available/default)

server {
    listen 80;
    server_name yourdomain.com;

    location /videos/ {
        root /var/www/html;
        add_header Access-Control-Allow-Origin *;
    }
}

 

📌 Nginx 재시작

sudo systemctl restart nginx

 

📌 웹사이트에서 동영상 요청 예시

<video controls>
    <source src="http://yourdomain.com/videos/sample.mp4" type="video/mp4">
</video>

 

🔹 2️⃣ HLS 스트리밍 적용 (대역폭 절감)

MP4 파일을 직접 제공하는 대신, HLS 방식으로 스트리밍하면 대역폭을 절감하고 재생 성능을 향상시킬 수 있습니다.

📌 FFmpeg를 이용한 HLS 변환 (MP4 → HLS)

ffmpeg -i sample.mp4 -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls sample.m3u8

 

📌 변환된 파일 업로드 (sample.m3u8, sample0.ts, sample1.ts 등)

sudo mv sample.m3u8 /var/www/html/videos/
sudo mv sample*.ts /var/www/html/videos/

 

📌 웹사이트에서 HLS 스트리밍 적용 (hls.js 활용)

<video id="video" controls></video>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<script>
  var video = document.getElementById('video');
  if (Hls.isSupported()) {
    var hls = new Hls();
    hls.loadSource("http://yourdomain.com/videos/sample.m3u8");
    hls.attachMedia(video);
  }
</script>

 

🔹 3️⃣ 캐싱 및 성능 최적화

사용자가 같은 동영상을 반복해서 보는 경우, 캐싱을 적용하면 서버 부하를 줄일 수 있습니다.

📌 Nginx 캐싱 적용 (/etc/nginx/nginx.conf)

location /videos/ {
    root /var/www/html;
    expires max;
    add_header Cache-Control "public, max-age=31536000";
}

 

📌 Gzip 압축 활성화 (/etc/nginx/nginx.conf)

gzip on;
gzip_types video/mp4 application/vnd.apple.mpegurl;

 

📌 Nginx 재시작

sudo systemctl restart nginx

 

 

'메모장' 카테고리의 다른 글

Nginx 기반 동영상 콘텐츠 서버 보안 설정  (0) 2025.03.27