Почему сервер некорректно стримит контент при подключённом Cloudflare?
Добрый день, уважаемые участники этого сервиса.
У меня на моём сайте есть возможность слушать аудио, а также скачать один файл. До недавних пор всё было хорошо, а недавно (возможно, после одного из моих обновлений ПО на сервере), всё стало работать немного некорректно. При воспроизведении аудио потерялась возможность переходить на другие секунды воспроизводимой дорожки, а также где-то через минуту его воспроизведение вовсе останавливается.
Статику отдаёт Nginx 1.8.0 на Ubuntu 12.04, без каких-либо дополнительных модулей.
Такое ощущение, что сервер стал отдавать браузеру контент в каком-то поточном режиме. Когда я скачиваю файл - его размер не отображается браузером, это напоминает скачивание дампа БД из phpmyadmin, когда браузер просто показывает количество загруженных байт, и так пока не завершится загрузка файла.
Недавно я подключил также к сайту проксирование через Cloudflare на бесплатном тарифе, чтобы получить себе https. Теперь вот думаю о том, что возможно в нём проблема.
Решил проблему, оказывается при использовании Cloudflare и стриминге какого-либо контента со своего сервера, этот самый контент необходимо переместить на поддомен для того, чтобы он не проксировался их серверами.
На случай если ссылка на статью устареет, напишу текст из неё сюда, благо его размер совсем небольшой, заодно и переведу его на русский:
CloudFlare может сильно помочь в ускорении работы и защите вашего сайта. Тем не менее, сайты, занимающиеся стримингом контента, должны переместить этот самый контент на поддомен, на котором будет отключено проксирование в DNS настройках. Если вы создали поддомен типа "streams.вашдомен.ru", вы должны добавить примерно такую DNS запись в настройки CloudFlare вашего домена:
CNAME streams is an alias of вашдомен.ru
(убедитесь, что значок облака будет серым для данной записи).
Мы видим проблемы производительности из-за большого количества соединений, когда проигрываемый контент запускается через прокси CloudFlare.
На заметку: встраиваемые на ваш сайт сервисы, вроде YouTube и Vimeo, не требуют специальной настройки вашего сервера по той причине, что их контент воспроизводится не через ваш сервер, а напрямую.