Яндекс.Диск — это облачное хранилище, которое позволяет получать данные через протокол Webdav. Используя Nginx, можно получать данные из хранилища, настроив прокси на вашем сервере. Данные будут доступны примерно так: static.mydomain.com/bigfile.zip. Данное хранилище подойдет для хранения больших данных с умеренной нагрузкой.
Сразу хочу предупредить, что у схемы есть недостатки:
1. Отдача файлов отсутствующих в кеше приводит к удвоению сетевого трафика;
2. Не известно, как будет пресекать это Яндекс.
Но есть и плюсы: цена за 1 ТБ хранилища всего лишь 200 руб/мес.
Переходим к конфигурации nginx:
Создаем директории для кеша nginx:
И не забываем указать параметры самого кеша в файле nginx.conf:
Проверяем:
1. Загружаем на Яндекс.Диск файл (к примеру song.mp3)
2. Заходим на static.mydomain.com/song.mp3
Для оптимизации хранилища советую увеличить размер кеша на максимально возможный.
P.S. Был вариант с fuse через смонтированный каталог, но такой вариант будет хуже работать на отдачу, чем nginx.
Сразу хочу предупредить, что у схемы есть недостатки:
1. Отдача файлов отсутствующих в кеше приводит к удвоению сетевого трафика;
2. Не известно, как будет пресекать это Яндекс.
Но есть и плюсы: цена за 1 ТБ хранилища всего лишь 200 руб/мес.
Переходим к конфигурации nginx:
server {
listen 80;
server_name static.mydomain.com;
location / {
#запрещаем писать
dav_access all:r;
client_max_body_size 0;
create_full_put_path on;
#готовим заголовок destination для webdav
set $destination $http_destination;
if ($destination ~* ^https(.+)$) {
set $destination http$1;
}
#убираем ненужные заголовки
ignore_invalid_headers off;
proxy_ignore_headers "Set-Cookie";
proxy_ignore_headers Expires Cache-Control;
proxy_ignore_headers Cache-Control;
proxy_cache cache;
proxy_cache_valid 200 1m;#1 мин кеша для успешных ответов
proxy_cache_bypass 0;#всегда используем кеш
proxy_buffering on;
proxy_redirect off;
proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
proxy_set_header Host webdav.yandex.ru;
proxy_set_header Destination $destination;
#dm9zZHNzZnZhOjEyMzEyMzIxMzM= base64 строка ВАШЕГО аккаунта яндекс в формате "login:password" ( http://base64.ru/ )
proxy_set_header Authorization "Basic dm9zZHNzZnZhOjEyMzEyMzIxMzM=";
proxy_pass https://webdav.yandex.ru;
}
}
Создаем директории для кеша nginx:
mkdir -p /var/lib/nginx/cache
chown -R www-data /var/lib/nginx/cache
chmod 700 /var/lib/nginx/cache
И не забываем указать параметры самого кеша в файле nginx.conf:
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=cache:100m max_size=2G;
Проверяем:
1. Загружаем на Яндекс.Диск файл (к примеру song.mp3)
2. Заходим на static.mydomain.com/song.mp3
Для оптимизации хранилища советую увеличить размер кеша на максимально возможный.
P.S. Был вариант с fuse через смонтированный каталог, но такой вариант будет хуже работать на отдачу, чем nginx.