2014-12-05 2 views
2

나는 레일 웹 앱을 nginx 웹 서버에두고있다. 내 서버에 오디오 파일이 몇 개 있는데 사람들이 그 파일을들을 수 있기를 원하고 오디오 파일의 어떤 부분을 청취 할 수 있기를 원합니다.직접 링크없이 오디오 파일을 스트리밍하는 방법

간단한 오른쪽?

내 html5 오디오 요소의 src에 직접 링크를 사용하고있었습니다. 그것은 훌륭하게 작동했습니다. 파일을 재생하고 검색 할 수 있습니다.

보안 및 감사 기능을 입력하십시오.

내 오디오 파일은 민감합니다. 나는 단지 특정 사람들이 그 말을들을 수 있기를 바랄 뿐이다. 나는 또한 그들이 그 말을들을 때마다 알 필요가있다. 갑자기 공용 디렉토리가 작동하지 않습니다.

레일의 send_file을 입력하십시오.

처음에는 Send_file이 필요한 것 같습니다. 레일이 내 오디오 파일을 제공 할 수있게하고, 파일을 보호 된 디렉토리에 보관하고 현재 사용자의 권한을 확인할 수 있으며 적절한 감사 내역을 만들 수 있습니다. 제외 ...

send_file로 찾을 수 없습니다. 그것은 거래 차단기입니다.

몇 가지 stackoverflow 질문은 http-range/byte-range 요청을 처리하기 위해 send_file을 가져 오는 중입니다. 내가 검토 것들은 다음과 같습니다

what is the proper way to serve mp4 files through rails...

rails media file stream accept byte range request through send file ...

는 더 많은 연구를 수행 한 후, 나는 다음과 같은 블로그 게시물을 발견 : https://blog.echoplex.us/2014/08/19/so-you-want-to-stream-videoaudio-with-rails/

TL을, 박사 은 레일 역할을 send_file 사용하지 않는 미디어. 그것을 stackoverflow 질문처럼 만들려고 노력하지 마라. 대신, nginx 및 X-Accel-Redirect를 사용하여 요청 파이프 라인으로 끝납니다 .-> nginx-> rails-> nginx-> you

나는 접근 방법을 고려하고 있지만 알지 못했습니다. 이것을 할 수있는 더 좋은 방법이 있다면.

내 옵션에는 어떤 것이 있습니까?

+0

문제를 해결 했습니까? – Anatoly

+0

글쎄, 꽤 오래되었습니다. 우리가 S3를 사용하여 오디오 파일을 제공하는 결과를 얻었을 것 같습니다. 그래서 훌륭한 레일과 관련된 대답은 없었습니다. 확실히 코드로 돌아 가야합니다. –

답변

2

가 sendfile을하시기 바랍니다 사용하지 마십시오 (또한, 당신은 내가 레일과의 nginx의 현재 버전을 사용하고 있다고 가정 할 수 있습니다). X-Accel-Redirect 또는 아래의 조언을 사용하십시오.

Nginx secure_link 모듈을 사용하면 개인 링크가있는 파일을 디스크에서 바로 보낼 수 있습니다. 백엔드는 필요하지 않습니다. 전체 예제는 here입니다.

관련 문제