Есть nginx-ы (на данный момент пробовал 1.0.14 и 1.1.17), которые отдают файлы. Всё работает замечательно, но при использовании Download Master-а файлы avi и mp3 приходят битые.
Конфиг nginx.conf такой.
user www-data;
worker_processes 8;
pid /var/run/nginx.pid;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Конфиг конкретного сервера такой.
upstream server-group {
ip_hash;
server api1:81;
server api2:81;
}
Т.е. есть некий шифрованный URL (например https://files.domainname.com/download/fileid123456?st=eEYnzmrrxzTjejtXssRnVQ&e=1332310281&u=4sAl7xYZ6Aqq), который генерится в PHP. Если его открыть, запрос через балансировщик прилетает на один из nginx-ов, Nginx проверяет через secure_link, правильный ли URL, и, если все ОК, отдаёт его одному из прокси. От прокси прилетает ответ с заголовками X-Accel-Redirect и Content-Disposition, по которому nginx идёт в internal локейшен и отдаёт файл по https-у.
Файлы лежат на подмонтированном через glusterfs сетевом хранилище. Всё это дело живёт под Debian-ом.
Всё работает замечательно, пока мы не попробуем скачать avi или mp3, используя Download Master (пробовали разные версии). Любым другим способом качается замечательно и приходит не битым. Не медиа файлы приходят целыми во всех вариантах. Никаких ошибок нигде не пишется, логи чистые и красивые.