134 lines
3.2 KiB
Markdown
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.
|