内网穿透全局 HTTPS 的一种思路
最近经常折腾一些 VPS
然后在 AppNode 部署一些服务, 折腾的过程中发现有 反向代理
这个选项
于是突发奇想, 我能不能在内网有一个这样的 反向代理
中心, 将所有的端口映射出去的服务器通过这个 反向代理
中心映射出去
经过尝试, 方案可行
这是一个非常令人兴奋的方案,可以完全将家里的服务器全部聚焦到一个服务器上, 接着在用这个服务器统一的去管理 HTTPS
证书和需要映射出去的端口;
假设现在有一台 CentOS 安装了 AppNode 名叫 Center
, 它的地址是 192.168.1.101
Center
可以反向代理 家里任何局域网的服务,假设Center 使用 10086 代理了openWrt
192.168.1.1:80
, 那么我们可以用192.168.1.101:10086
来访问openWrt
- 通过
DDNS
将 10086这个端口原封不动的映射出去,并且对DDNS域名
进行了端口映射, 所以理论上我们可以通过DDNS域名
:10086 来访问openWrt - Center 上安装的 AppNode 可以使用证书管理工具对某个域名生成 SSL证书[如果没有 80 端口可以通过 DNS 解析的方式生成证书], 然后再将该
反向代理
开启HTTPS
,在对该代理的 10086 端口进行端口监听, 然后不出意外就可以通过https://xxxx.cn:10086 来访问openWrt
优点
- 安全性高: 不对外暴露真正服务器的端口和 IP,对外暴露的 IP 和端口统一收口到
CentOS
上 HTTPS
证书管理方便: 真正的服务器可以是任何HTTPS
或者HTTP
协议,因为CentOS
最终对外都是HTTPS
服务- 端口映射整齐划一, 方便管理
具体怎么操作呢
准备条件
- 在域名中心将域名 A 记录指向家里的公网 IP [DDNS]
- AppNode 里生成该域名的 SSL 证书 [也可以手动导入]
开始工作
- 在 AppNode 里建立反向代理的网站, 后端服务是需要代理的
IP:PORT
- 在该网站详情里添加监听的端口 譬如: 10086
- 在爱快端口映射该端口, 最好和网站的端口一样, 如上: 10086
- 开启https
这样就可以通过 域名:10086 访问该代理的家庭局域网服务了