Puo's 学习园地
http://puo.cn

同域名内外网智能路由

问题

我在内网服务器上部署了一个 Alist 服务(通过 FnOS 的 Docker 环境部署),并通过内网穿透实现外网访问。该服务有一个域名(如 alist.example.com)解析到外网的 FRP 地址。我想实现这样的智能访问:当在内网时直接访问服务器,不经过 FRP;当在外网时则通过 FRP 访问。
如果有其他人有这种需求,可以参考下面我的解决方案

解决方案

软路由通过DNS解析指向本地的Nginx服务,Nginx再将请求反向代理到对应的本地IP和端口。

  • DNS服务:内网已安装iStoreOS软路由(其他openwrt软路由也行),其中默认包含dnsmasq,对应的内网IP:192.168.1.1
  • Nginx服务:部署在FnOS中,使用1Panel面板的OpenResty进行反向代理,其他反代软件也行,对应的内网IP:192.168.1.50
  • Alist服务:部署在FnOS的Docker环境中,对应的内网IP:192.168.1.50,端口:5244

具体步骤

编辑dnsmasq配置

首先通过SSH连接到软路由,使用vim或nano编辑/etc/dnsmasq.conf文件,添加如下配置:

配置格式为:address=/后接域名alist.example.com,最后是Nginx服务的内网IP地址(本例中为192.168.1.50

address=/alist.example.com/192.168.1.50

然后执行命令,重启dnsmasq

/etc/init.d/dnsmasq restart

在1Panel中添加反代

如果你使用其他反向代理软件,不一定要用1Panel,因为原理都是一样的。

由于1Panel安装在FnOS内,FnOS默认会将80和443端口重定向到FnOS的端口。

这时只需取消下方的勾选,然后在安装1Panel时直接使用80和443端口即可。

不过请注意,这样设置后直接输入FnOS的IP地址将无法访问,需要在地址后加上对应的端口号。

 

 

安装完1Panel之后,进入1Panel,然后点击网站创建网站

 

 

填入相关信息即可。

DNS生效需要大约10分钟的时间。生效后,在内网访问域名时会直接通过本地反向代理访问服务,无需经过FRP。

此时你会发现内网访问默认使用HTTP协议,而外网部署通常默认使用HTTPS。为了解决这种访问协议不一致的问题,只需要在1Panel中配置相应的证书即可。

配置内网Https

首先进入1Panel,依次点击网站证书。如果之前已申请过证书,只需点击上传证书即可。我此前在NginxProxyManager中申请了泛域名证书,因此直接下载使用即可。

 

 

 

 

保存填写内容后,进入网站列表,点击刚创建的网站,依次选择配置HTTPS 。然后选择刚上传的证书并保存即可

打赏
允许转载,请注明转载地址:Puo's 学习园地 » 同域名内外网智能路由

评论 抢沙发

做一个好的个人学习园地

主要网建,域名、集装箱物流、生活方法论的学习及研究,整理等内容

网址导航222域名店

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册