X-Send File и NGINX

Sanu0074
На сайте с 31.08.2012
Offline
110
761

Есть модуль апача - X-Send File с помощью которого скачиваются файлы с сайта:

header("X-Sendfile: ".realpath($route));

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$name."\"");

Но когда поставил NGINX, скачивание работать перестало.

Когда я иду по http://site.com/download/?id=95, пишет что не 80 порту: The requested URL /index.php/download/ was not found on this server.

Что нужно подправить?

DV
На сайте с 01.05.2010
Offline
644
#1

В nginx используется x-accel-redirect.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
Sanu0074
На сайте с 31.08.2012
Offline
110
#2

DenisVS, Сделал так:

header("X-Accel-Redirect: ".realpath($route));
header("Content-Type: application/x-force-download");
header("Content-Disposition: attachment; filename=\"".$name."\"");

И добавил в siteavialable файл


location /download {
root /var/site/_files;
internal;
}

И пишет теперь

404 Not Found
nginx/1.4.6 (Ubuntu)

В папке /_files есть еще подпапки, из-за этого может быть?

S
На сайте с 02.05.2014
Offline
61
#3
Sanu0074:
В папке /_files есть еще подпапки, из-за этого может быть?

Должна быть такая же структура как и в X-Accel-Redirect

А можно взглянуть на результат функции .realpath($route), путь до файла должен начинаться с /download

Sanu0074
На сайте с 31.08.2012
Offline
110
#4

Sujcnm, вот как выглядит сам заголовок

X-Accel-Redirect: /download/content/95/arch.rar

т. е. В сумме с алиасом должно быть так:

/var/site/_files/content/95/arch.rar

т. е. путь верный

S
На сайте с 02.05.2014
Offline
61
#5
Sanu0074:
т. е. В сумме с алиасом должно быть так:
/var/site/_files/content/95/arch.rar
т. е. путь верный

Нет, путь не верный, документация говорит, что должно быть так:

/var/site/_files/download/content/95/arch.rar
Sanu0074
На сайте с 31.08.2012
Offline
110
#6

Решил проблему. Заменил в location и php заголовок на /download_file/

Ошибка была из-за того что /download/ было и в урле и в конфиге

Наверное есть разница, если в локейшене /download/ написано, то по урлу host/download/?id=1 работать не хочет, сменил локейшн на отличный от сегмента в урле и заработало

Всем спасибо

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий