说明
本文为Navdrome的进阶设置,意在实现Navidrome服务端音乐源的直链播放,并通过nginx实现https访问。为了帮助你更好的理解直链播放,你需要先阅读下我的另一篇笔记: 基于网盘挂载的emby服务端并实现直链播放 。由于音乐本身容量不大,即便无损格式,最多也才几十M,故实现直链播放本身意义没有 emby
来得明显,本文供闲的蛋疼的折腾玩家一个另类的思路。
原理
搭建 alist多种存储的目录文件列表程序 ,将需要挂载的网盘添加上去,如阿里云盘,世纪互联等,然后使用 nginx
及其 njs
模块将 navidrome
音乐播放地址劫持到 alist
直链。
准备工作
- 已按照本人上一篇基于网盘挂载搭建属于你自己的音乐服——navidrome 完成Navidrome的搭建。
- 已完成本人基于网盘挂载的emby服务端并实现直链播放 里
alist
和nginx
、njs模块
的安装工作。 解析域名到你的vps。
申请域名证书
采用网上提供Acme.sh 域名证书一键申请脚本进行申请,首先停止nginx服务
systemctl stop nginx
然后复制一键脚本申请证书
wget -N --no-check-certificate https://raw.githubusercontents.com/Misaka-blog/acme-1key/master/acme1key.sh && bash acme1key.sh
按1安装 Acme.sh 域名证书申请请脚本,根据提示输入自己的邮箱
然后返回主菜单,按3申请单域名证书,根据提示输入自己的域名
出现如下提示,表示证书申请完成
接下来,新建/root/certs/你的域名
,将root
目录下的cert.crt
和private.key
复制到此目录。配置Nginx
进入nginx配置目录,删除
default.conf
,并创建以你域名命名的conf,如yourdomain.com.conf
cd /etc/nginx/conf.d rm default.conf vi yourdomain.com.conf
填入如下内容:
js_path /etc/nginx/conf.d/;
js_import msc2pan from msc.js;
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name yourdomain.com;
root /root/certs/yourdomain.com;
index index.html index.htm index.php;
ssl_certificate /root/certs/yourdomain.com/cert.crt;
ssl_certificate_key /root/certs/yourdomain.com/private.key;
location / {
add_header 'Referrer-Policy' 'no-referrer';
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:4533;
}
location ~* /rest/stream {
js_content msc2pan.redirect2Pan;
}
}
{/collapse-item}
在 /etc/nginx/conf.d/
目录下新建msc.js,填入以下内容:
然后在 /etc/nginx/nginx.conf
首行添加如下内容:
load_module modules/ngx_http_js_module.so;
启用nginx服务,并验证配置有无问题:
nginx -c /etc/nginx/nginx.conf
nginx -t
如无报错,重启nginx服务
nginx -s reload
打开你的域名,如能正常访问navidrome页面,视为配置成功。
验证直链是否正常
完成直链播放还有一个前提,首先打开你的app,添加的音乐服地址,并完成登录。
然后用浏览器打开你的navidrome主页,点击右上角头像-客户端
找到你手机使用的app名称,点击进去
勾选回报实际路径,保存
然后,在你的app上随便播放一首歌,试试拖曳速度,能正常播放视为直链正常。
查看下日志:
tail -f -n 10 /var/log/nginx/access.log /var/log/nginx/error.log | grep js:
如出现以下直链地址,表示直链成功,并且此时流量不经过 vps 服务器。
最后感谢下本教程脚本的提供大佬: bpking
没有他的技术支持也就没有本教程。
谢谢分享
看看怎么搞
技术文章 感谢分享 新年快乐
先收藏了
谢谢分享