Использование X-Sendfile для маскировки местоположения статического файла
Я предлагаю платные видео на моем сайте, которые доступны только для членов. На данный момент я выполняю полную аутентификацию и потоковую передачу видео через скрипт PHP, однако он имеет тенденцию использовать много ресурсов, и я бы хотел использовать nginx для фактического обслуживания файла. Чтобы сделать это, я обнаружил, что вы должны отправить X-Accel-Redirect
заголовок из вашего PHP-скрипта, который затем передает файл, обслуживающий nginx.
Однако есть одна проблема: URL-адрес видео для потоковой передачи не обслуживается тем же сервером, что и этот сайт. Он приходит с одного из моих других сайтов, который полностью находится на другом VPS-сервере (и домене). Несмотря на это, я попробовал этот простой тестовый скрипт:
<?php
header('X-Accel-Redirect: http://other-site.com/protected/videos/test.mp4');
Но я не знаю, что использовать в моей конфигурации nginx для обслуживания файла в http://other-site.com/protected/videos/test.mp4
, в то же время скрывая исходный URL-адрес видео от пользователя.
Когда я получаю доступ к вышеуказанному тестовому скрипту, nginx возвращает 404 Not Found
и в журнале ошибок есть такая запись:
open() "/var/www/site.com/web/publichttp://other-site.com/protected/videos/test.mp4" failed (2: No such file or directory)
Итак, nginx явно пытается решить http://other-site.com/protected/videos/test.mp4
к пути в корне документа сайта, вместо того, чтобы распознавать, что это ресурс в другом месте, и просто "проксировать" файл.
Кто-нибудь получил какие-нибудь советы по тому, как заставить это работать?
2 ответа
Я полагаю, что вы пытаетесь прокси, что MP4. Я думаю, что проблема в конфигурации сервера nginx.
Взгляните на этот модуль:
Использование nginx для пересылки статических файлов с помощью X-Accel-Redirect обычно делается для локально размещенных ресурсов.... Но я нашел это, я думаю, это то, что вы ищете: используйте Nginx для прокси-файлов из удаленного расположения с помощью X -Accel-Redirect