给Aria2服务器所用的SSL证书往往不支持Aria2所使用的6800端口,而80/443端口还要提供HTTP服务,为此就需要用Nginx来实现同时提供HTTP和Aria2 JSONRPC服务了。
目前已经测试通过并部署到了生产服务器,本文只做一个记录。
最终效果:
1.禁止外网直接访问Aria2 RPC
修改Aria2配置文件
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=false
#允许非外部访问
rpc-listen-all=false
#RPC端口, 仅当默认端口被占用时修改
rpc-listen-port=6800</pre>
2.修改你的站点的Nginx配置文件
#ARIA2
location /jsonrpc {
proxy_pass http://localhost:6800/jsonrpc;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
#以下代码使支持WebSocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
其中 location /jsonrpc 表示设置好后RPC地址为 //example.com/jsonrpc
这样做还有一个好处,那就是不需要单独为Aria2 RPC服务器设置密码验证了。认证直接靠nginx完成,能见到webui就能连上ARIA2 RPC