OpenWRT下实现Frp内网穿透端口复用(群晖)

Linux, 折腾 2020/07/03

使用Frpc做内网穿透,实现外网能问群晖,但是有个问题:

群晖默认的WEB管理端口是5000,而Photo Station的端口又是80,怎么实现仅用一个域名+80的端口,同时能访问到NAS和Photo Station?

比如FRPC的 HTTP服务穿透端口80,添加自定义域名 nas.bugxia.com80 端口指向 NAS的 5000 端口

这样的话

NAS能通过 http://nas.bugxia.com 正常访问,但是却跳转不到 http://nas.bugxia.com/photo

方法

仔细研读frpc的文档,才发现原来有个叫 URL 路由 的功能

https://github.com/fatedier/frp/blob/master/README_zh.md#url-路由

frp 支持根据请求的 URL 路径路由转发到不同的后端服务。

通过配置文件中的 locations 字段指定一个或多个 proxy 能够匹配的 URL 前缀(目前仅支持最大前缀匹配,之后会考虑正则匹配)。例如指定 locations = /news,则所有 URL 以 /news 开头的请求都会被转发到这个服务。

使用

这里以OpenWRT(https://gitee.com/louislau/luci-app-frpc)为例

分别添加两个一样的配置,内网主机端口分别为 500080 ,对应群晖的WEB端和Photo Station

修改5000的配置,打开URL 路由开关,修改值为 locations=/

再修改80的配置,打开URL 路由开关,修改值为 locations=/photo

保存即可生效

上述操作即可实现仅用一个域名+80的端口,同时能访问到NAS和Photo Station。

BUG

我安装的这版luci-app-frpc,存在一个bug,就是页面上URL路由设置好后,无法保存。

尝试手动修复,分析半天,发现页面参数名后多了个空格,导致无法保存设置

打开 /usr/lib/lua/luci/model/cbi/frp/config.lua,删掉这个空格,保存刷新页面即可

本文标签:


评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)