ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Nginx и mod zip: загрузка файлов с внешних серверов с использованием имени домена


  • To: nginx-ru@xxxxxxxxx
  • Subject: Nginx и mod zip: загрузка файлов с внешних серверов с использованием имени домена
  • From: "dizelbox" <nginx-forum@xxxxxxxx>
  • Date: Tue, 29 Jan 2013 10:39:16 -0500
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tigger.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=SJ7AvAMbo039qkrUqo9dEzyb0kjZtm/C8jYIWrbaPaY=; b=nVTnx9E9bzhqw2kB07Wvfm40I8oaqEnSe2G2Y2typcL0KlIPCJFiiG6R2aJj1YjCGw0xhaQtLjQZSIi5xWhkrCywwdqqLaDb3SzDvbC4weRudWCT5UBisjLaLAVWFdxy;

Делаю формирование динамического zip-архива с помощью модуля mod_zip.
Используется вот такой конфиг для выкачивания файлов с внешних серверов
(file-server1.local, file-server2.local ...). Формирование динамического
архива осуществляется примерно таким кодом:

<?php

header('Content-Disposition: attachment; filename=' . $archiveName);
header('X-Archive-Files: zip');
echo implode("\r\n", $zip_files) . "\r\n";
exit();


Массив $zip_files примерно такого содержания:

array(7) {
  [0] => string(140) "15263b8b 66000
/remote/file-server1.local/files/private/ee4b41adb859ccce6be2fa0c45fc64f0.ini?name=php.ini&s=QNaKDGtKbhi5f1ySB3LwpQ,1359444711
php.ini"
  [1] => string(170) "bc8706b1 8361107
/remote/file-server1.local/files/private/154eeb7eef9e55ce2da97d9f7cd6fee5.zip?name=nginx-1.2.6-build.zip&s=3VFP4YEG3I5bAuQH0tiYww,1359444711
nginx-1.2.6-build.zip"
  [2] => string(157) "9e7b9349 917698
/remote/file-server1.local/files/private/597d93a30395e27a1f19f7e226187163.sql?name=tariff_dump.sql&s=U0CdT7Z6n4AoGiZ3K6Qe2Q,1359444711
tariff_dump.sql"
  [3] => string(145) "e7310915 225234
/remote/file-server1.local/files/private/350679e790a7f702a5d37bee444de9f3.jpg?name=other.jpg&s=Fy4YD6rh5FMgvbSGn9Klzg,1359444711
other.jpg"
  [4] => string(101) "0a099d44 36459
/remote/file-server1.local/files/public/8b62108713f3e949d7a27cdb4d3f3e18?name=memcache
memcache"
  [5] => string(286) "50208924 466588
/remote/file-server1.local/files/public/9e751852bdfcce582f193a893eb7ad65.jpg?name=%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%BE%D0%B5_%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F.jpg
russkoe_nazvanie_izobrazheniya.jpg"
  [6] => string(116) "d67324f8 19
/remote/file-server1.local/files/public/30e64f83b137f0e1e26624bdcbc59912.php?name=test_script.php
test_script.php"
}



Проблема заключается в том, что не удается скачать файл по имени домена.
Скачивание получается осуществить только по ip-адресу. Для этого осуществляю
преобразование названия домена в ip с помощью функции gethostbyname() и
получаю примерно такой массив:

array(7) {
  [0] => string(140) "15263b8b 66000
/remote/127.0.1.1/files/private/ee4b41adb859ccce6be2fa0c45fc64f0.ini?name=php.ini&s=QNaKDGtKbhi5f1ySB3LwpQ,1359444711
php.ini"
  [1] => string(170) "bc8706b1 8361107
/remote/127.0.1.1/files/private/154eeb7eef9e55ce2da97d9f7cd6fee5.zip?name=nginx-1.2.6-build.zip&s=3VFP4YEG3I5bAuQH0tiYww,1359444711
nginx-1.2.6-build.zip"
  [2] => string(157) "9e7b9349 917698
/remote/127.0.1.1/files/private/597d93a30395e27a1f19f7e226187163.sql?name=tariff_dump.sql&s=U0CdT7Z6n4AoGiZ3K6Qe2Q,1359444711
tariff_dump.sql"
  [3] => string(145) "e7310915 225234
/remote/127.0.1.1/files/private/350679e790a7f702a5d37bee444de9f3.jpg?name=other.jpg&s=Fy4YD6rh5FMgvbSGn9Klzg,1359444711
other.jpg"
  [4] => string(101) "0a099d44 36459
/remote/127.0.1.1/files/public/8b62108713f3e949d7a27cdb4d3f3e18?name=memcache
memcache"
  [5] => string(286) "50208924 466588
/remote/127.0.1.1/files/public/9e751852bdfcce582f193a893eb7ad65.jpg?name=%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%BE%D0%B5_%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F.jpg
russkoe_nazvanie_izobrazheniya.jpg"
  [6] => string(116) "d67324f8 19
/remote/127.0.1.1/files/public/30e64f83b137f0e1e26624bdcbc59912.php?name=test_script.php
test_script.php"
}


Конфиг nginx для скачивания файлов с внешних серверов такой:

location ~* ^/remote/(.+?)/(.+)$ {
    internal;
    proxy_hide_header Content-Type;
    proxy_pass http://$1/$2$is_args$args;
}


Вопрос заключается в следующем: можно ли как-то скачивать файлы именно по
имени домена, так как не всегда можно организовать такую структуру, чтобы
каждый домен был на отдельном ip-адресе?

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,235692,235692#msg-235692

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.