Nginx ayarı değişikliği gerekmeden Laravel API üzerinden çözüm
Problem: Müzik dosyaları (HLS formatında) tarayıcıda çalmıyordu. "keyLoadError" hatası alıyordu.
Neden: Tarayıcılar güvenlik nedeniyle farklı kaynaklardan gelen dosyaları engelliyor. Nginx sunucusu dosyaları verirken "bu dosyaya güvenebilirsin" demiyor.
Çözüm: Dosyaları Nginx yerine Laravel üzerinden verdik. Laravel her dosyaya "bu güvenli" etiketini ekliyor.
Nginx ayarı DEĞİŞMEDİ!
Tüm çözüm kod tarafında yapıldı. Sunucu ayarlarına dokunulmadı.
Browser (HLS.js) → /storage/.../segment.ts → Nginx → No CORS ❌ Browser (HLS.js) → /api/.../key → Laravel → CORS ✅
Nginx static dosyaları doğrudan sunuyor, Laravel middleware'i çalışmıyor.
Browser (HLS.js) → /api/muzibu/songs/{id}/hls/playlist.m3u8 → Laravel → CORS ✅
Browser (HLS.js) → /api/muzibu/songs/{id}/hls/segment-XXX.ts → Laravel → CORS ✅
Browser (HLS.js) → /api/muzibu/songs/{id}/key → Laravel → CORS ✅
Tüm HLS dosyaları artık Laravel API üzerinden sunuluyor.
Modules/Muzibu/routes/api.php
Yeni route: /{id}/hls/{filename}
Modules/Muzibu/app/Http/Controllers/Api/SongStreamController.php
Yeni method: serveHls() - CORS headers ile dosya sunumu
app/Services/SignedUrlService.php
HLS URL: /storage/... → /api/...
Access-Control-Allow-Origin: https://muzibu.com
Access-Control-Allow-Methods: GET, OPTIONS
Access-Control-Allow-Headers: Content-Type, Range
Access-Control-Allow-Credentials: true
Değişiklik Yok
Nginx konfigürasyonunda hiçbir değişiklik yapılmadı.
Neden Nginx'e dokunulmadı?
Aşağıdaki dosyalar güncel olmalı:
Gerekli değil!
HLS dosyaları Laravel API üzerinden sunuluyor, Nginx sadece PHP-FPM'e proxy yapıyor.