聪明的玩法不是二选一,而是两个都要。国内机负责面向用户的 Web 服务,海外机负责不需要备案的后端、API、代理流量。这篇文章讲清楚怎么把它们串起来。

方案一:国内机 Web + 海外机 API(最简单)

适合场景:国内机备案建站,海外机跑数据密集型的后端服务。

架构

用户浏览器
    │
    ▼
国内云服务器(Nginx 前端, 备案域名)
    │  静态文件直接返回
    │  动态请求 proxy_pass
    ▼
海外 VPS(后端 API / 数据库 / Python 脚本)

国内机 Nginx 配置

server {
    listen 80;
    server_name example.com;

    # 静态文件直接返回
    location / {
        root /var/www/html;
    }

    # API 请求转发到海外机
    location /api/ {
        proxy_pass https://api.overseas.example.com;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

优点:实现简单,一条 proxy_pass 搞定。缺点:API 请求走国内→海外,延迟 100-200ms,不适合实时性要求高的场景。

方案二:海外机建站 + 国内 CDN(需备案)

适合场景:你的主站在海外,但想让国内用户访问更快。

架构

用户(国内)
    │
    ▼
国内 CDN 节点(缓存静态资源)
    │  回源请求
    ▼
海外 VPS(源站)

操作步骤

  1. 海外 VPS 正常搭建网站,绑定域名
  2. 域名在国内 CDN 厂商完成备案(这一步需要国内服务器辅助)
  3. CDN 配置回源到海外 VPS IP
  4. 域名 CNAME 指向 CDN 加速域名

核心逻辑:静态资源(图片、CSS、JS)缓存到国内 CDN 节点,用户访问时从最近的节点拉取,只有动态请求才回源海外。对于内容型网站,缓存命中率可以到 90% 以上,实际体验接近国内机。

方案三:Tailscale 异地组网

适合场景:个人开发者、小团队,想用最简单的方式打通国内外机器。

搭建(3 步搞定)

# 每台机器上都执行
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up

# 国内机
tailscale up --advertise-routes=10.0.1.0/24

# 海外机
tailscale up --advertise-routes=10.0.2.0/24

# 在 Tailscale 管理后台启用 subnet routes

配好后,国内机和海外机可以通过 Tailscale 内网 IP 直接通信,延迟虽然受物理距离影响但连接稳定。你可以:

  • 海外机的数据库只监听 Tailscale IP,国内机通过内网 IP 直连,不用暴露公网端口
  • 用 Tailscale SSH 远程管理,不需要开放 22 端口
  • 海外机下载的文件通过 Tailscale 直接传到国内机

方案四:frp 内网穿透 + Nginx 反代

适合场景:你需要把海外机的某个服务"搬"到国内域名下,让用户感觉不到跨境的延迟。

架构

用户(国内)
    │
    ▼
国内云服务器(frp 客户端 + Nginx, 备案域名)
    │  通过 frp 加密隧道
    ▼
海外 VPS(frp 服务端, 实际服务)

海外机 - frp 服务端

# frps.toml
bindPort = 7000

[[proxies]]
name = "web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 8080

国内机 - frp 客户端 + Nginx

# frpc.toml
serverAddr = "海外机IP"
serverPort = 7000

[[proxies]]
name = "web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 8080
# 国内机 Nginx
server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

用户访问国内域名,Nginx 反代到 frp 隧道,数据加密传输到海外 VPS 的真实服务。

方案选型总结

方案复杂度延迟适用场景
国内 Web + 海外 API中(100-200ms)前端国内、后端海外
海外站 + 国内 CDN低(静态资源)内容型网站,需要备案
Tailscale 组网取决于线路个人/小团队,内网互通
frp + Nginx 反代特定服务对外暴露在国内域名

安全提醒

  • 海外机和国内机之间的通信尽量走加密隧道(frp 自带加密,Tailscale 用 WireGuard)
  • 海外机不要开放 22 端口到公网,用 Tailscale SSH 管理
  • Nginx 反代时配置好限流和 IP 白名单,防止海外端口被扫
  • 定期检查 frp 和 Tailscale 版本更新,这些工具修漏洞很快