侧边栏壁纸
博主头像
玄近安

抬猪高手,略懂代码

  • 累计撰写 9 篇文章
  • 累计创建 9 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

1Panel+FRP反向代理实现域名无端口访问内网

玄近安
2024-11-27 / 0 评论 / 0 点赞 / 99 阅读 / 0 字

目的

将内网的多个应用,从原来的多端口访问,改为现在的子域名访问(默认端口),以及用1Panel简单的实现HTTPS且自动续期。

例如:

原来:
  • 博客服务:http://example.com:8090 或者 http://app.example.com:8090

  • 云存储服务:http://example.com:40033或者 http://app.example.com:40033

  • 其他应用服务:http://example.com:1234或者 http://app.example.com:1234

  • ...

现在:
  • 博客服务:https://blog.example.com

  • 云存储服务:https://cloudreve.example.com

  • 其他应用服务:https://app.example.com

  • ...

准备

  • 一台公网服务器(云服务器或其它有公网IP的机器,非内网机器即可),这里假设该机器外网IP:88.88.88.88,实际请根据具体情况设置

  • 一台内网服务器(本地自用的,需要做内网穿透的机器,放置应用)

  • 一个主域名(有权限配置子域名解析)

  • 一个有DNS权限的账号密钥(用于配置证书,有证书不考虑自动续期的可跳过)

注意:本例使用example.com域名,腾讯云服务器做演示,具体请根据自身实际情况进行修改。

安装

1Panel的安装这里就不讲了,这些看安装文档就行:

https://1panel.cn/docs/installation/online_installation/

两台(内、外网)服务器都装上1Panel,然后在1Panel上安装应用。

  • 公网服务器:OpenResty(用于Nginx反向代理)、Frps(FRP服务器版)

  • 内网服务器:Frpc(FRP客户端)、其他你需要暴露到公网的应用(如:halocloudreve 等。

上述应用安装时使用默认配置即可,其它应用看你自身情况配置(可无需暴露外网端口)。

配置

[公网服务器]Frps配置

进入公网服务器1panel界面,来到 主机->文件->/opt/1panel/apps/frps/frps/data/frps.toml

# /opt/1panel/apps/frps/frps/data/frps.toml(frps默认配置路径)
# 在代码中加上以下两行配置 
# ...
# http端口(自行随意配置,只要端口不冲突都可以,端口无需开放外网)
vhostHTTPPort = 7501
# 主域名
subdomainHost = "example.com"
#...

配置完,记得重启Frps应用。

[内网服务器]Frpc配置

第一步:登录Frpc Dashborad

根据初始化配置的参数,浏览器中访问http://1panel内网ip:7400 ,会进入Dashborad界面

不知道密码的,可以回去查看下应用的具体端口、用户名和密码

不知道内网ip的,可以使用ip address命令查看(windows中使用ipconfig命令),比如我的就是http://192.168.0.104:7400(记得在防火墙处开放7400端口)

第二步:配置应用网站

点进Configure,配置需要暴露到公网的应用,可参看以下配置输入:

# ...
# 以下配置,仅供参考,根据自身应用所在的端口来设置。

# 博客应用
[[proxies]]
name = "blog"
# 这里只需要http即可,https会在外网服务器上配置。
type = "http"
# 当前应用暴露的端口。
localPort = 8090
# 当前应用你想要配置的子域名
# 如果你想要访问 https://blog.example.com 时访问到博客系统,即用如下配置。
subdomain = "blog"
# 或者
# customDomains = ["https://blog.example.com"]
# 注:如果 frps 配置了 subdomainHost,则 customDomains 中不能是属于 subdomainHost 的子域名或者泛域名。

# cloudreve应用
[[proxies]]
name = "cloudreve"
type = "http"
localPort = 40033
subdomain = "cloudreve"

# ...其他你想要配置的应用

最后记得使用Upload和Refresh操作,配置之后效果大致如下:

[公网服务器]1Panel网站配置

第一步:创建网站

1Panel首页->网站->创建网站,这里的网站就是上面配置的网站,多个应用的从里面选一个域名即可。

第二步:域名设置

将其他域名都放在网站下的域名设置中(也可以分开写,重复第一步的操作即可,看你自己)

[公网服务器]1Panel HTTPS配置(不需要,可不配)

第一步:配置证书

此处需要配置泛域名证书(也可一个一个子域名的配,如果你不嫌麻烦的话,而且单独配置的话,上面子域名就不能一起配置)。

  • 先申请创建DNS账号,此处我使用了腾讯云。

当然也可以选择其他账号,你的域名解析在哪里就选哪个

  • 之后再创建ACME账户(这个只要邮箱就行)。

  • 最后申请泛域名证书

第二步:配置HTTPS

启动HTTPS放入证书即可(此处放的是上面申请的泛域名证书)。

配置域名解析

给主域名配置解析,将对象域名打到公网服务器IP上,本例使用腾讯云DNSPod解析做演示,具体界面根据自己域名服务商而定,基本大同小异,具体配置如下:

最后

最后目的达成,直接通过子域名访问到原来需要端口号的地址,而且都有HTTPS协议。

此后需要继续添加暴露公网的应用,只需要在这是三个地方配置即可:

  1. 公网服务器,网站配置加上子域名。

  2. DNS域名解析,解析域名到公网服务器IP上。

  3. 内网服务器,Frpc Dashboard上配置需要穿透的应用。

附:本次环境

  • 外网服务器:腾讯云服务器,Ubuntu版本: 24.0.4,1Panel版本:社区版 v1.10.21-lts ,Frps:0.61.0,openresty:1.21.4.3-3-3-focal

  • 内网服务器: Ubuntu版本:24.0.4,1Panel版本:社区版 v1.10.21-lts ,Frpc:0.61.0

  • 域名及域名解析:腾讯云DNSPod托管,使用腾讯云DNS解析

附:参考

文章较长,难免错漏,如有发现,大可指出。

感激不尽,以上。

0

评论区