Найти в Дзене
Linux Info

Скачивание по прямой ссылке с помощью NGINX

Здравствуйте, представим что вам поступила задача
Сделать так чтобы из папки
/www/testing.com/shared/
можно было скачивать mp4 файлы по прямой ссылке

Здравствуйте, представим что вам поступила задача

Сделать так чтобы из папки

/www/testing.com/shared/

можно было скачивать mp4 файлы по прямой ссылке

https://testing.com/shared/video.mp4

Веб-сервер который использует домен NGINX

Сначала необходимо установить права доступа на директорию /www/testing.com/shared/

chmod 755 /www/testing.com/shared/

Далее, находим файл конфигурации для домена testing.com и редактируем его

vi /etc/nginx/vhost/testing.com.conf

*Нахождение конфигурационных файлов vhost может различаться

Изучаем файлы конфигурации и если нет уже созданных блоков для location /shared/ ,то добавляем в конфигурацию новый блок

location /shared/ {
alias /www/testing/shared/;
autoindex off;
location ~ /*/(.*\.mp4)$ {
add_header Content-Disposition "attachment";
add_header Content-type application/octet-stream;}
}

alias /www/testing/shared/ - указываем на пути на сервере

autoindex off - запрещаем вывод листинга каталога /shared/, если установить значение on, то по ссылке https://testing.com/shared/ были бы видны все файлы в каталоге /www/testing.com/shared/ и была бы возможность их скачать.

location ~ /*/(.*\.mp4)$ - указываем на все файлы .mp4, здесь вы можете изменить или добавить любой тип файл, к примеру

location ~ /*/(.*\. mp4 | mp3 | avi | png )$

add_header Content-Disposition "attachment" - устанавливается для того чтобы видео не проигрывалось в браузере, а принудительно скачивалось

add_header Content-type application/octet-stream - определяет тип контента

Сохраняем файл, и теперь нам необходимо чтобы NGINX применил новую конфигурацию, выполняем

nginx -s reload

Если ошибки не найдены, конфигурация применится

Чтобы наверняка применились конфигурации, применяется команды полного перезапуска сервисов, но лучше их применять после nginx -s reload, так как по этой команде ещё и проверяется синтаксис

service nginx restart

или

systemctl restart nginx

Надеюсь эта статья вам поможет!