OpenWRT下实现Frp内网穿透端口复用(群晖)
使用Frpc做内网穿透,实现外网能问群晖,但是有个问题:
群晖默认的WEB管理端口是5000,而Photo Station的端口又是80,怎么实现仅用一个域名+80的端口,同时能访问到NAS和Photo Station?
比如FRPC的 HTTP服务穿透端口
为 80
,添加自定义域名 nas.bugxia.com
的 80
端口指向 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)为例
分别添加两个一样的配置,内网主机端口分别为 5000
和 80
,对应群晖的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
,删掉这个空格,保存刷新页面即可
5 条评论
大佬为啥用虚拟机装openwrt,而不是用docker呢
@阿牛哥哥
因为用习惯了PVE,备份、修改配置什么的很顺手了
大佬,请问我设置了url路由不能正常打开,而不设置url路由反而能正常打开是缺少了什么?
请教:如何在OpenWRT的frp中配置端口范围转发,比如我要转发udp:10000-10100端口到内网主机,我始终无法添加,报错“一些项目的值无效,无法保存”
@xinlon
这是个bug,如果要修改frpc的端口是范围的话,可以直接修改配置文件/etc/config/frp里的内容