目的
将内网的多个应用,从原来的多端口访问,改为现在的子域名访问(默认端口),以及用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
的安装这里就不讲了,这些看安装文档就行:
两台(内、外网)服务器都装上1Panel
,然后在1Panel
上安装应用。
公网服务器:OpenResty(用于Nginx反向代理)、Frps(FRP服务器版)
内网服务器:Frpc(FRP客户端)、其他你需要暴露到公网的应用(如:
halo
,cloudreve
等。
上述应用安装时使用默认配置即可,其它应用看你自身情况配置(可无需暴露外网端口)。
配置
[公网服务器]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协议。
此后需要继续添加暴露公网的应用,只需要在这是三个地方配置即可:
公网服务器,网站配置加上子域名。
DNS域名解析,解析域名到公网服务器IP上。
内网服务器,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解析
附:参考
文章较长,难免错漏,如有发现,大可指出。
感激不尽,以上。
评论区