У меня есть сайт, где mp4-файлы возвращают ошибку 404.
У них установлено authorized_extensions со значением *. Загрузка файлов проходит без проблем. Я вижу их в файловой системе. Права доступа установлены верно. Команда file подтверждает, что это MP4-файл. Запись в Rails выглядит корректно:
но при попытке открыть файл возвращается ошибка 404. Недавно было выпущено несколько новых функций и исправлений ошибок, связанных с mp4, но я только что обновил систему, и проблема всё ещё не решена. Не знаю, куда ещё можно посмотреть.
Проблема в том, что конфигурация nginx разрешает только определённые типы файлов. Переношу это в баг-трекер.
В discourse.conf есть такой блок:
# это позволяет нам обходить rails
location ~* \.(gif|png|jpg|jpeg|bmp|tif|tiff|ico|webp)$ {
add_header Access-Control-Allow-Origin *;
try_files $uri =404;
}
Я добавил mp3 и mp4 к списку типов файлов (после webp), и теперь mp4-файлы работают. Это сделано в discourse.conf внутри контейнера. Я вижу упоминание “bypass rails” в discourse_dockerconfig/nginx.sample.conf. Не понимаю, как этот фрагмент попадает в шаблон внутри Docker, поэтому не могу определить, когда именно это произошло.
У них стоит * в разрешённых типах файлов. Не знаю, есть ли какая-то магия, которая позволила бы mp3/mp4 работать, если бы они были перечислены в настройках сайта, но не вижу, как это могло бы быть реализовано.
и метод show просто отправляет файл. Конфигурация nginx лишь повышает эффективность, обходя Rails, но это не является обязательным требованием.
Ох… параметр authorized_extensions предназначен только для авторизации загрузки, а не для скачивания (то есть отсутствие расширения в этом списке не должно препятствовать загрузке файла).
Мне не удалось воспроизвести эту проблему в последней версии с пройденными тестами, поэтому, возможно, вам стоит переместить тему обратно в раздел Support
РЕДАКТИРОВАНИЕ: Я поискал ваш сайт в Google, и, похоже, у вас есть и другие проблемы.
Я всё ещё не понимаю это сообщение Service Worker, но я отключил prevent_anons_from_downloading_files, и теперь всё работает. Похоже, что настройка «prevent_anons» несовместима с CDN?
И, думаю, вы смотрите на https://www.turiver.com/t/argentina-la-sociedad-perdida/117158/8017, который при проверке загружается с CDN как для авторизованных, так и для неавторизованных пользователей.