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

134 lines
3.2 KiB
Markdown

# 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:
```bash
docker-compose up -d
```
Aplikace pak bude dostupná na:
- **Frontend s nginx**: http://localhost/
- **Backend přímo**: http://localhost:8080/
## Ruční Spuštění
### 1. Spusťte backend Java aplikaci:
```bash
./mvn clean package
java -jar target/xtream-player-1.0.0.jar
```
### 2. Spusťte nginx:
```bash
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):
```bash
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:
```bash
mkdir -p deploy/nginx/ssl
# Použijte Let's Encrypt, self-signed certs, nebo váš certifikát
```
2. Upravte `deploy/nginx/nginx.conf`:
```nginx
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;
}
```
3. 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**:
```bash
docker logs <nginx_container_id>
# nebo
sudo tail -f /var/log/nginx/error.log
```
3. **Zkontrolujte backend logs**:
```bash
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.