Nginx 能否将本地的多个端口转发到同一端口的不同目录
玩树莓派遇到的问题,自己查了很久资料没搞定,求求论坛的各位大神指点!
背景
设备是树莓派,用了花生壳的内网穿透,免费版只提供两个端口,SSH 用掉一个 22 端口,现在只剩一个端口了。
我有如下服务:
- Jupyter:
http://localhost:8888 - Aria2 的 RPC:
http://localhost:6800/jsonrpc - 其他某服务:
http://localhost:5299 - Aria-NG:基于 Nginx,
http://localhost/aria-ng
受到 Aria-NG 的启发,所以我在想能不能用 Nginx 实现如下转发:
- Jupyter:
http://localhost/jupyter - Aria2 的 RPC:
http://localhost/jsonrpc - 其他某服务:
http://localhost/xxx - Aria-NG:
http://localhost/aria-ng
我查到 Nginx 的默认端口是 80,如果上面可以实现的话,或许就可以只用一个 80 端口来使用多个服务。(应该是可以的,我之前试了 80 端口,用 外网域名:外网端口 /aria-ng 可以访问 Aria-NG,但是因为 Aria2 的 RPC 在 6800,所以只有 Aria-NG 的界面,没法实际使用。)
目前的失败尝试
在/etc/nginx/nginx.conf中,进行如下修改:
html { ...... server { listen 80; server_name localhost; # Jupyter Notebook location /jupyter { proxy_pass http://localhost:8888; ...... } # Aria2 JSONRPC location /jsonrpc { proxy_pass http://localhost:6800/jsonrpc; ...... } # XXX location /xxx { proxy_pass http://localhost:5299; ...... } }
重启 nginx 服务后,在树莓派上访问localhost/jupyter,错误 404 。局域网访问或外网访问自然也失败了。
查到的资料基本上都是一个端口或域名转发到另一个端口或域名的,基本没有我这里的多个端口转发到同一端口的不同目录。还有一些用到了 stream 模块,但也是局域网内的端口对端口。只有这个帖子比较像: https://www.imooc.com/wenda/detail/510191 ,但是没有详细答案。
当然,这个问题不用花生壳就能解决了,但还是好奇,上面提的方案有没有实现的可能性?