@criminalist

Правильные пути для header('X-Accel-Redirect:?

Здравствуйте, вопрос такой почему когда отправляю заголовок
header("X-Accel-Redirect: $filename");
Переменная $filename ровна "/usr/home/www/site.ru/uload/file/id/name.rar"
То есть путь правильный и все в порядке, но на страницы получаем ошибку, идем в nginx.log и видим такой путь
/usr/home/www/site.ru/usr/home/www/site.ru/uload/file/id/name.rar

Это ведь не то что я передаю, все перепроверил на 100500 раз, предполагаю проблема с nginx.conf
в нем если опираться на статьи должна присутствовать секция

location /download {
      internal;
}

Я ее не прописывал, по причине того что у меня каждый файл лежит в отдельной папки по ID, как создать такую локацию не смог понять.
Есть у кого опыт может подскажите куда капнуть?
  • Вопрос задан
  • 837 просмотров
Пригласить эксперта
Ответы на вопрос 2
ivankomolin
@ivankomolin
В заголовок X-Accel-Redirect необходимо передавать URI

Пример:
В nginx есть локейшн:
location /download {
      internal;
}


Значит в X-Accel-Redirect необходимо передавать урл, который именно этот локейшн обработает:
X-Accel-Redirect: /download/images/234123/base.png

Вообще чтобы такие вещи реализовывать необходимо сначала разобраться как работает nginx, хотя бы понять то как nginx обрабатывает запросы и как на это влияет его конфиг.
В вашем случае очевидно что вы передаете урл который nginx конкатенирует с каким-то root на сервере в локейшн которого он попал.
Ответ написан
@criminalist Автор вопроса
В общем вопрос решен, локацию вообще не стал делать, в PHP прописал имя файла, корень взялся от ROOT в nginx
header("X-Accel-Redirect: $filepath);
В итоге правильный путь получился, по ряду причин и нежеланием что то менять в движке сайта обошёлся таким способом.
Спасибо всем кто откликнулся.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы