Настройка Nginx HestiaCP - Cкачивание mp3 файлов с поддомена + Ограничение скорости
После переноса mp3 файлов на поддомен, они перестали скачиваться корректно, вместо прямого скачивания, файлы стали открываться в новом окне и проигрываться в встроенном плеере браузера.
Вот такой вид у прямой ссылки на файл:
https://ap.domain.ru/uploads/public_files/2024-08/eriic-na_rec-jovich-uragan.mp3
Скачать можно будет с:
https://domain.ru/pesnya.html
Решение для Ubuntu 22.04 + HestiaCP:
1. Cоздать basename_map.conf
Путь SFTP /etc/nginx/conf.d/basename_map.conf
Заходим в терминал по SSH, допустим Windows PowerShell и создаем файл:
nano /etc/nginx/conf.d/basename_map.conf
Копируем туда следующее:
#basename_map.conf
map $uri $basename {
~([^/]+)$ $1;
}
Сохраняем: Ctr+X,Y,Enter. После чего тестируем nginx: nginx -t, и перезагружаем systemctl reload nginx:
#Тест + перезагрузка nginx
nginx -t && systemctl reload nginx
2. Cоздать nginx.ssl.conf_force_download
Путь SFTP /home/user/conf/web/ap.domain.ru/
Внимание!
Замените user на своего пользавателя!
Замените ap.domain.ru на свой домен, а также путь /uploads/public_files/.
Создаём по SSH следующий файл:
nano /home/user/conf/web/ap.domain.ru/nginx.ssl.conf_force_download
Копируем в него следующее содержимое:
#nginx.ssl.conf_force_download
#Без кеширования (для теста).
location ^~ /uploads/public_files/ {
root /home/user/web/ap.domain.ru/public_html;
location ~* \.mp3$ {
add_header Content-Disposition 'attachment; filename="$basename"';
add_header X-Content-Type-Options nosniff;
add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
types {
application/octet-stream mp3;
}
}
}
#Ctr+V - Вставить
#Ctr+K - Удалить строку
#Ctr+X - Сохранить
Сохраняем: Ctr+X,Y,Enter. После чего тестируем nginx: nginx -t, и перезагружаем systemctl reload nginx:
#Тест + перезагрузка nginx
nginx -t && systemctl reload nginx
После чего файлы: https://ap.domain.ru/uploads/public_files/2024-08/eriic-na_rec-jovich-uragan.mp3, перестанут открываться в браузере, скачивание начнётся сразу.
Включаем кеширование.
Правим уже имеющийся у нас файл по SSH:
nano /home/user/conf/web/ap.domain.ru/nginx.ssl.conf_force_download
Заменяем нужную строчку, либо удаляем все строчки Ctr+K, и вставляем следующее:
#nginx.ssl.conf_force_download
#Кеш на 1 год
location ^~ /uploads/public_files/ {
root /home/user/web/ap.domain.ru/public_html;
location ~* \.mp3$ {
add_header Content-Disposition 'attachment; filename="$basename"';
add_header X-Content-Type-Options nosniff;
add_header Cache-Control 'public, max-age=31536000'; # Для кэша на 1 год
types {
application/octet-stream mp3;
}
}
}
#Ctr+V - Вставить
#Ctr+K - Удалить строку
#Ctr+X - Сохранить
Сохраняем: Ctr+X,Y,Enter. После чего тестируем nginx: nginx -t, и перезагружаем systemctl reload nginx:
#Тест + перезагрузка nginx
nginx -t && systemctl reload nginx
Включаем ограничение скорости на скачивание mp3
Правим по SSH:
nano /home/user/conf/web/ap.domain.ru/nginx.ssl.conf_force_download
Добавляем limit_rate 120k:
#nginx.ssl.conf_force_download
#Кеш на 1 год + ограничение скорости 120 килобайт в секунду
location ^~ /uploads/public_files/ {
root /home/user/web/ap.domain.ru/public_html;
location ~* \.mp3$ {
add_header Content-Disposition 'attachment; filename="$basename"';
add_header X-Content-Type-Options nosniff;
add_header Cache-Control 'public, max-age=31536000';
types {
application/octet-stream mp3;
}
limit_rate 120k;
}
}
#Ctr+V - Вставить
#Ctr+K - Удалить строку
#Ctr+X - Сохранить
#Тест + перезагрузка nginx
nginx -t && systemctl reload nginx
Проверяем скорость:
curl -L -o /dev/null -w "%{speed_download}\n" "https://ap.domain.ru/uploads/public_files/2024-08/ja-hochu-s-toboj.mp3"
Комментариев 0