Page 1 of 1

x-accel-redirect

Posted: Sat Jun 04, 2016 9:42 am
by nitsik
Здравствуйте. ОС Debian 8.0. В файл /home/user/conf/web/nginx.conf добавил следующее

Code: Select all

location ~* ^/internal_redirect/(.*?)/(.*) {
    internal;

  access_log /var/log/internal_redirect.access.log;
  error_log /var/log/internal_redirect.error.log;
   
    # If you use variables in proxy pass you need to
    # tell nginx how to resolve your host
    # otherwise you will get 502 errors
    # you could also use google 8.8.8.8
    resolver 8.8.8.8;
 
    proxy_buffering off;
    proxy_set_header Content-Length ""; 
    proxy_set_header Cookie ""; 
 
    proxy_hide_header x-amz-request-id;
    proxy_hide_header x-amz-meta-uid;
    proxy_hide_header x-amz-id-2;
    proxy_hide_header x-amz-meta-mode;
    proxy_hide_header x-amz-meta-mtime;
    proxy_hide_header x-amz-meta-gid;
    proxy_hide_header x-amz-version-id;
    proxy_hide_header accept-ranges;
 
    # Do not touch local disks when proxying
    # content to clients
    proxy_method GET;
    proxy_pass_request_body off;
    proxy_max_temp_file_size 0;
 
    set $download_host $1; 
    set $download_uri $2; 
 
    set $download_url http://$download_host/$download_uri;
 
    #add_header x-by "$instance_id:s3";
 
    proxy_pass $download_url;
  }
чтобы использовать x-accel-redirect в php вот так:

Code: Select all

header("X-Accel-Redirect: /internal_redirect/site.ru/path_to_file.mp3");
Проблема в том, что, когда урл такого вида site.ru/path_to_file.mp3 - все работает нормально, но когда в путь добавляется еще один слеш или слеши, то не работает: site.ru/path/path_to_file.mp3
Почему так? по идее в коде

Code: Select all

location ~* ^/internal_redirect/(.*?)/(.*)
(.*) - должно включать в себя слеши? На другом хостинге под управлением другой панели этот код работает нормально, я, кончено, понимаю, что дело не в панеле, а, видимо, в каких-то настройках, помогите решить эту проблему.

Re: x-accel-redirect

Posted: Sun Jun 05, 2016 7:53 am
by nitsik
Сделал через

Code: Select all

header("X-Accel-Redirect: /internal_redirect/?url=site.ru/path_to_file.mp3");
и

Code: Select all

set $download_url http://$arg_url;
proxy_pass $download_url;
Теперь скачивание работает, но не работает многопоточное скачивание. Подскажите, как исправить? На другом сервере с настройками выше файл качается многопоточно с помощью downloadmaster.

Re: x-accel-redirect

Posted: Tue Jun 07, 2016 9:54 am
by mdok
Здесь рыбы нет, сходите лучше на https://toster.ru/

Re: x-accel-redirect

Posted: Tue Jun 21, 2016 1:09 pm
by skurudo
nitsik wrote: Теперь скачивание работает, но не работает многопоточное скачивание. Подскажите, как исправить? На другом сервере с настройками выше файл качается многопоточно с помощью downloadmaster.
Необычная задача и довольно необычный вопрос, попробовал бы подождать ответа - https://forum.nginx.org/read.php?21,267403
mdok wrote:Здесь рыбы нет, сходите лучше на https://toster.ru/
Занятная точка зрения, особенно с учетом того, что на тостере помойка та еще.
Впрочем попытка не пытка, но уверен, что там ответа точно не будет.

Re: x-accel-redirect

Posted: Thu Jun 23, 2016 2:22 pm
by nitsik
Да, ответа до сих пор нигде нет. На плеск заработало многопоточно, если что... Почему так, не знаю... Ни на тостере, ни на nginxe ответа не дали...

Re: x-accel-redirect

Posted: Mon Jun 27, 2016 2:08 pm
by skurudo
nitsik wrote:Да, ответа до сих пор нигде нет. На плеск заработало многопоточно, если что... Почему так, не знаю... Ни на тостере, ни на nginxe ответа не дали...
Давайте сравним конфиги?
(кстати плеск берет nginx из реп или как-то по-другому?)