Мы запускаем симпатичный ванильный сервер Centos 7 LAMP (Apache 2.4 с mod_pagespeed PHP 5.6, MariaDB 5.5) и недавно начали встраивать html5-видео на фоне некоторых страниц в соответствии с кодом:
<video class="banner-video" loop autoplay poster="img/poster.jpg">
<source src="videos/intro.mp4" type="video/mp4">
</video>
Видео работает так, как ожидалось, и автоматически зацикливается, как и ожидалось, большинство наших клиентов загружают видео один раз и перезагружают видео из кеша после первого запуска, но у нас есть некоторые клиенты (на данный момент я насчитываю 3), которые продолжают -загрузка каждый раз после первого запуска, и это довольно быстро уносит нашу пропускную способность (иногда один и тот же IP-адрес загружает один и тот же видеофайл размером 7 МБ на 35 ГБ).
Я почти уверен, что это поведение не является вредоносным (по крайней мере, в этом случае я готов поверить, что это некоторая неправильная конфигурация на их прокси-сервере или что-то в этом роде), и поэтому я ищу способы ограничить пропускную способность, используемую одним IP-адресом. адрес или, чтобы лучше информировать клиентский браузер о кешировании видеофайла, мы уже пытались использовать в виртуальном хосте apache и через .htaccess эту конфигурацию, и, похоже, это не имеет значения.
<FilesMatch "\.(mp4)">
Header set Cache-Control "max-age=604800, must-revalidate"
</FilesMatch>
Я уже тестировал перемещение видеофайла на другой сервер с другой конфигурацией (еще более ванильный Centos 6.6 LAMP), чтобы проверить, не было ли это неправильной конфигурацией с нашей стороны.
поэтому мой вопрос: есть ли простой способ заблокировать с помощью конфигурации apache (временно, на 24 часа или, возможно, на одну неделю) только загрузку файла по определенным IP-адресам после, скажем, 10 загрузок, сохраняя при этом возможность загрузки остальной части сайта ?
или есть лучший способ проинформировать клиента о соблюдении правил кеширования?
Я, вероятно, мог бы написать PHP-скрипт, который подсчитывал раз, когда файл был загружен, и отвечал 403 в случае, если он был загружен более X раз с одного и того же IP, но я не думаю, что это решение оптимально.
поскольку по журналам apache наш клиент работает под управлением Windows 10 x64 с google chrome 48 (возможно, это известная ошибка)
Просто небольшой дополнительный ответ на этот вопрос, чтобы он не остался без ответа навсегда, на самом деле это не решает проблему, но, по крайней мере, снижает счет, который мы должны были оплатить.
Мне удалось воспроизвести проблему с плохо настроенным сервером squid, действующим как прокси.
В этом случае я разместил видео и другие видео, которые нам приходилось размещать с тех пор, на другом сервере с более высокой задержкой, но с чрезвычайно низкой пропускной способностью.
Общий опыт работы с клиентами не сильно меняется, потому что, поскольку мы размещаем видеофайлы только на дешевом сервере, мы не платим высокую цену за задержку для каждого файла, а только за запрос к видео.