나는 많은 시간을 들여 답변을 검색하고 모든 것을 시도했다고 믿습니다. rtmp 스트림을 HLS 스트림으로 푸시하는 nginx 서버를 실행 중입니다. 다음은 nginx - auth_request를 통해 HLS 스트림을 보호하려고 시도했습니다.
는 일치하면 내가 다음 URL에서 매개 변수를 받고 오전 PHP 페이지를 통해 스트림을 인증하기 위해 노력하고location /hls {
types {
application/vnd.apple.mpegurl m3u8;
}
root /mnt/;
set $auth_request_uri "http://SERVER:8000/auth_ext.php?token=$arg_token";
auth_request /auth/;
add_header Cache-Control no-cache; # Prevent caching of HLS fragments
add_header Access-Control-Allow-Origin *; # Allow web player to access our playlist
}
location /auth/ {
internal;
proxy_pass $auth_request_uri;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
는 200 OK 응답 내 nginx.conf의 일부입니다 내 DB에 토큰.
지금까지 인증을 관리 했으므로 토큰이 일치하는 경우 http://SERVER:8080/hls/stream.m3u8?token=TOKEN에 액세스 할 수 있음을 의미하지만 여기에는 어떤 일이 발생합니까?
나는 대역폭에 따라 스트림을 적응 메인 M3U8 스트림을 가지고, 내가 콘솔에서 stream.m3u8에 액세스 할 때 나는 매개 변수가 그나마 때문에 마지막 세 M3U8는 404 응답이http://SERVER:8080/hls/stream.m3u8?token=TOKEN
http://SERVER:8080/hls/stream_mid.m3u8
http://SERVER:8080/hls/stream_hd720.m3u8
http://SERVER:8080/hls/stream_src.m3u8
참조 통과하므로 절대 URL이로드되지 않는 스트림이 있습니다. 또한 m3u8 자체에서 .ts 파일도 404를 얻습니다.
첫 번째 m3u8에 대한 첫 번째 호출이 인증 될 때마다 나머지 m3u8 및 ts 파일에 액세스하거나 200을 반환 할 수 있습니다. 코드?
는 정말 감사합니다 좀 더 자세한 내용
으로 제공 할 수있는, 나 자신은 분명히 희망 인증 결과가 요청간에 공유되지 않는 모든