用 VPS 反向代理本地服务器到公网(Tailscale 虚拟内网方案)
- 笔记
- 2025-08-14
- 67热度
- 0评论
在现实中,如果你身边有一台性能不错的服务器,但是没有公网 IP,可以通过购买一台便宜的 VPS 组成虚拟内网,然后用 VPS 反向代理本地服务到公网上。
Q:为什么不用 frp?
A:frp 更新频繁,配置稍显复杂,而 Tailscale 的设置相对简单。
0.5 购买一台公网 VPS
推荐 AKI,一家主打大流量的云服务商,便宜主机可以蹲活动,或者在 Push 市场加价买。
我的 aff 链接:
https://akile.io/register?aff_code=4b747e2a-2136-4be3-b678-d470b262f0bf
1. 安装环境
为了方便运维,本地机和 VPS 都装上宝塔面板。
我的操作环境(仅供参考,不必完全一致):
- 本地主机:Debian 12、宝塔 11.0、nginx 1.28、PHP 8.4
- VPS:Debian 12、宝塔 11.0、nginx 1.28
2. 组建虚拟内网
打开 tailscale.com,注册账号并新建虚拟内网,将两台机子都加入同一内网。
在 Tailscale 的管理面板有操作引导和一键加入命令,非常简单。
3. VPS 反代本地服务
我在本地服务器上通过虚拟内网迁移好了另一台云主机的 WordPress,这就是本地服务。(宝塔迁移很好用,你知道吗?)
本地机设置
在本地主机的网络服务中,添加本机的虚拟 IP(Tailscale 分配的地址)。
VPS 设置反向代理
在 VPS 的宝塔面板中添加反向代理,指向本地机的虚拟 IP 。
4. WordPress 反代后的 HTTPS 问题
一般的网络服务到这就能正常访问,但 WordPress 使用 SSL + 反向代理时可能会遇到样式丢失问题。
参考:
WordPress 反代后,css 丢失或者后台进不去的问题的解决 - NodeLoc
原因:
回源使用 HTTP(80 端口)时,WordPress 误以为是 HTTP 网站,导致资源链接变成 http://
而不是 https://
。
解决方法:
- 在反代的 VPS 上申请 Let's Encrypt 证书,并启用强制 HTTPS。
- 将 VPS 的证书复制到本地机,同样启用强制 HTTPS。
- 如果使用 Cloudflare CDN,建议使用“灵活模式”。
5. 多服务反代
如果有多个网络服务,可以通过不同端口区分,并分别反代。
这样,你就能用一台便宜的 VPS,把没有公网 IP 的本地服务器服务安全地发布到公网了。
本地服务器+反向代理=便宜且性能强劲的公网服务器。