Nginx некоторым браузерам не отдаёт контент

Есть сервер, на него установлен apache и nginx в качестве фронт-енда. Т.е. статику отдаёт сам, остальное передаёт апачу.
Недавно был переезд с одного сервера на другой, конфиги я просто скопировал и всё вроде как работало, но пользователи стали даловаться, что файлы не скачиваются.
И действительно, открыв Google Chrome и попытавшись скачать файл я лишь увидел в ответ заголовки

Request URL:http://....mp4
Request Method:GET
Status Code:206 Partial Content

Response Headers
Cache-Control:max-age=86400
Connection:keep-alive
Content-Length:1
Content-Range:bytes 4021-4021/87723281
Content-Type:application/octet-stream
Date:Tue, 01 Nov 2011 13:14:22 GMT
Expires:Wed, 02 Nov 2011 13:14:22 GMT
Last-Modified:Sun, 30 Oct 2011 22:33:24 GMT
Server:nginx


И статус "(canceled)" (во вкладке Network в dev-tools).
Файл не скачивается.

Открыл FireFox и файл в нём скачался.
Заголовки такие:

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 01 Nov 2011 13:17:34 GMT
Content-Type: application/octet-stream
Content-Length: 87723281
Last-Modified: Sun, 30 Oct 2011 22:33:24 GMT
Connection: keep-alive
Expires: Wed, 02 Nov 2011 13:17:34 GMT
Cache-Control: max-age=86400
Accept-Ranges: bytes


Файл успешно начал скачиваться.
К слову — файл я отдаю через php просто через header('Location: ...');

Location в nginx такой:
location ~* ^.+\.(mp4)$ {
proxy_temp_path /home/proxy/ 1 2;
root /static/$host;
ssi on;
error_log /var/log/nginx/static.error.log;
expires 24h;
}


В error.log'ах пусто. Помогите пожалуйста решить проблему.
  • Вопрос задан
  • 8018 просмотров
Пригласить эксперта
Ответы на вопрос 3
shushu
@shushu
Тут не столько проблема настройки сервера как проблема самого броузера. На Апаче такая же ситуация.

Задачка интересная, завтра еще гляну
Ответ написан
Проверил — такая же проблема как и в Chrome наблюдается в Safari.
В логе браузера при этом появляется запись:
Chrome: Resource interpreted as Other but transferred with MIME type undefined.
Safari: Ресурс интерпретирован как Документ, но перемещен с MIME-типом application/octet-stream.

Как вариант — попробуйте отдавать mp4 файлы с MIMI video/mp4, может что-то из этого выйдет. Еще посмотрите какая версия nginx, может обновление поможет.
Ответ написан
voiceofreason
@voiceofreason
А воз и ныне там проблему никак пока не удалось решить
location /files {

if ($request_filename ~* ^.*?/([^/]*?)$)
{
set $filename $1;
add_header Content-Disposition «attachment; filename=$filename»;
}
}
почему то не работает
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы