xtream-player/NGINX_SETUP.md
Radek Davidek 22d0e0dfd0 added cors
2026-03-10 15:47:10 +01:00

3.2 KiB

Xtream Player - Nginx Setup Guide

Problem Fixed

Když jste provozovali aplikaci přes nginx, video přehrávač nefungoval. Problém byl v chybějících CORS (Cross-Origin Resource Sharing) headerech. Nyní jsme:

  1. Přidali CORS headers do Java backendu
  2. Přidali support pro OPTIONS preflight requests
  3. Vytvořili optimalizovanou nginx konfiguraci pro streamování videa

Spuštění s Docker Compose (Doporučeno)

Nejjednodušší způsob je spustit obě služby (backend + nginx) najednou:

docker-compose up -d

Aplikace pak bude dostupná na:

Ruční Spuštění

1. Spusťte backend Java aplikaci:

./mvn clean package
java -jar target/xtream-player-1.0.0.jar

2. Spusťte nginx:

docker run -d \
  -p 80:80 \
  -v $(pwd)/deploy/nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro \
  nginx:latest

Nebo s native nginx (Linux):

cp deploy/nginx/nginx.conf /etc/nginx/sites-available/xtream-player
sudo ln -s /etc/nginx/sites-available/xtream-player /etc/nginx/sites-enabled/
sudo systemctl reload nginx

HTTPS/SSL Setup

Pro bezpečné HTTPS připojení:

  1. Vytvořte SSL certifikáty:
mkdir -p deploy/nginx/ssl
# Použijte Let's Encrypt, self-signed certs, nebo váš certifikát
  1. Upravte deploy/nginx/nginx.conf:
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    
    # ... rest of config
}

# Redirect HTTP to HTTPS
server {
    listen 80;
    return 301 https://$server_name$request_uri;
}
  1. Aktualizujte docker-compose.yml pro SSL volume

Troubleshooting

Video přehrávač stále nefunguje?

  1. Zkontrolujte browser console (F12 → Console):

    • Hledejte CORS errory
    • Hledejte "stream-proxy" errory
  2. Zkontrolujte nginx logs:

docker logs <nginx_container_id>
# nebo
sudo tail -f /var/log/nginx/error.log
  1. Zkontrolujte backend logs:
docker logs <xtream-player_container_id>
# nebo koukejte na console kde jste spustili Java

Nginx vrací 502 Bad Gateway?

  • Ujistěte se, že backend je spuštěný na portu 8080
  • Zkontrolujte, že nginx má přístup k backendu (network settings)
  • Zkontrolujte nginx logs pro konkrétní chybu

Velké soubory se neloadují?

  • V nginx.conf je client_max_body_size 256M; - zvyšte v případě potřeby
  • Ujistěte se, že proxy_buffering off; je nastaveno pro /api/stream-proxy

Architektura

Klient (browser)
    ↓
Nginx (reverse proxy, CORS headers)
    ↓
Java aplikace (8080)
    ├─ /api/... (API endpoints s CORS)
    ├─ /api/stream-proxy (HLS stream proxy)
    └─ / (static HTML/CSS/JS)

CORS Headers

Nyní jsou automaticky přidávány všem odpovědím:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With
Access-Control-Max-Age: 86400

Pokud potřebujete omezit origin (bezpečnější), měňte Access-Control-Allow-Origin v kódu.