这篇文章上次修改于 580 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

关于 RPC

全称是 Remote Procedure Call (远程过程调用),而在这里的作用是负责充当一个远程下载的工具.

而这里我使用的是 Aria2c(一个知名的开源下载程序),当然也有其他的远程下载器.
2022-12-17T12:50:33.png

配置

项目地址: aria2c + AriaNg + RunHiddenConsole
这三个分别是: 程序本身,UI,后台运行依赖
这个程序本身是纯命令行的,一般是配合其他前端 UI 来使用.这里推荐使用 AriaNg(中文介绍), 也就是上图第三个项目,纯HTML代码的前端界面.

不知道为什么,关于这个软件的东西不太好找,并且想要在 Windows 上用的舒服,还得依赖一个 RunHiddenConsole 让这种程序在后台运行.而且因为是开源,所以软件版本还不止一个,选择困难症犯了(并没有,哪个能用用哪个

找到上面前两个东西之后就可以轻松的在浏览器看到程序的运行信息了.因为没设临时环境变量,我必须先 cd 到程序目录下才能正常运行.关于配置 aria2.conf 的相关信息可以去官方文档 https://aria2.github.io/manual/en/html/aria2c.html#files 找到.
2022-12-17T16:33:04.png
而 WebUI 的配置存储在 localStorage 当中.

HTTPS

如果只是打算用,到上面差不多就算完了.但我本地用 mkcert 全部换成 HTTPS 之后就出问题了.或许是协议问题,也可能是出于安全考虑,在 HTTPS 的情况下我不能用 HTTP 协议的 RPC 地址了.但是没有关系,身为一个写代码的,怎么能连这点小事都解决不了呢?我直接反代不就好了.
2022-12-17T16:35:16.png
虽然想法和原理很简单,但过程还是很曲折的.
首先第一个问题是怎么反代,因为我之前其实没用过,所以还摸索了一下.我们的需求就是把一个默认的本地域名 443 端口反代到 127.0.0.1:6800 这个地址.直接给出配置吧!

location = /jsonrpc {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:6800;
    }

很简单的精准匹配 ~
为了搞定这个需求,我还去看了一下 Nginx 的通配符匹配.我一开始还以为代理地址需要加路径的,结果当然是一直 404 了.同时有个小坑,监听端口不能是 RPC 的端口号,否则就会出现占用问题,它们两个至少有一个不能正常工作.我选择把需要反代的地址端口号改成 443, 当然使用默认的 6800 也行,只需要在 aria2c 的配置里把默认端口改一下就行了.
在需要的地方添加上面这一段后重新加载 Nginx 的配置文件就完成了!
2022-12-18T15:16:33.png
2022-12-18T15:22:15.png