前言
很多站长手里都有一台性能强劲的国内物理服务器(NAS),同时也持有像 example.org 这样优质的国际域名。但痛点在于:域名未备案,国内服务器无法直接通过 80/443 端口对外服务,且家用宽带通常封锁了标准 Web 端口。
为了解决这个问题,通常需要一台海外 VPS 做中转。经过反复测试与权衡,我摸索出了一套“国内源站 + 海外优质线路反代 + FRP 加密隧道”的架构方案。
这套方案不仅解决了备案阻断问题,还实现了:
- 全链路加密:防止流量在跨境传输中被嗅探。
- 真实 IP 透传:国内业务日志能准确记录访客真实 IP。
- 端口隐身:通过本地回环绑定,海外机器不开放任何业务端口,安全性极高。
架构拓扑
- 源站 (Domestic):国内服务器,运行宝塔面板,部署 WordPress 业务站点,运行 FRP 客户端 (FRPC)。
- 中转 (Overseas):日本 BGP 线路 VPS,部署 Nginx Proxy Manager (NPM) 处理 HTTPS,运行 FRP 服务端 (FRPS)。
- 链路流向:
用户->HTTPS (443)->海外 NPM->HTTP (Local:6080)->FRP 隧道 (TLS 加密)->国内 FRPC->宝塔 Nginx (80)
一、海外服务端部署 (FRPS)
我们在海外 VPS 上直接运行 FRP 二进制文件,运行FRP的服务端,使用简单的 Shell 脚本进行管理。
1. 下载与安装
前往 FRP Release 页面 下载最新版本:
将解压获得 frps 文件放入到 /root/frp/ 目录中
2. 配置文件 frps.toml
在 /root/frp 目录下创建 frps.toml:
然后启动frp的服务端(后台运行)
3. 启动脚本管理
在 /root 目录下创建管理脚本,方便随时启停。
启动脚本 frp_start.sh:
停止脚本 frp_stop.sh:
别忘了赋予权限:chmod +x /root/frp/frp_start.sh /root/frp/frp_stop.sh
4. 配置开机自启 (rc.local)
编辑 /etc/rc.local (如果文件不存在则新建),在 exit 0 之前添加:
注意:确保 /etc/rc.local 具有可执行权限 chmod +x /etc/rc.local
二、国内源站部署 (FRPC)
国内机器作为客户端,负责建立一条加密的 TCP 长连接隧道。
1. 下载与安装
步骤同上,将解压后的 FRP 目录中的frpc文件(frp客户端)移动到 /root/frp 。
2. 配置文件 frpc.toml
在 /root/frp 目录下创建 frpc.toml。为了规避防火墙干扰,我们开启 TLS 协议 和 内容加密。
3. 启动脚本管理
同样在 /root/frp 下创建:
启动脚本 frp_start.sh:
停止脚本 frp_stop.sh:
赋予权限:chmod +x /root/frp/frp_start.sh /root/frp/frp_stop.sh
4. 配置开机自启
编辑国内服务器的 /etc/rc.local,添加:
三、海外反代配置 (Nginx Proxy Manager)
在海外 VPS 的 Nginx Proxy Manager (NPM) 中,我们需要把域名流量转发给 FRP 监听的本地端口。
- Add Proxy Host: 填写域名
example.org - 转发协议:
http - 转发IP: 填写
127.0.0.1。- 重要:必须填 127.0.0.1。因为我们在
frps.toml里配置了proxyBindAddr限制,填公网 IP 是连不通的。
- 重要:必须填 127.0.0.1。因为我们在
- Forward Port: 填写
8080(即 frpc 配置的 remotePort)。 - SSL: 申请 Let’s Encrypt 证书并强制开启 Force SSL。
原理:用户访问 HTTPS -> NPM 解密 -> 转发给本机的 127.0.0.1:8080 -> 进入 FRP 隧道。
四、核心难点:真实 IP 透传 (Real-IP)
如果不做这一步,国内宝塔面板的日志里全是 127.0.0.1,无法做日志审计或封禁恶意 IP。
1. 修改宝塔网站配置
进入国内源站宝塔面板 -> 网站 -> 设置 -> 网站配置文件, 在配置文件的最顶部,插入以下三行核心配置:
2. 验证
修改后重载 Nginx,查看网站访问日志,此时应该能看到海外用户的真实公网 IP。
五、方案总结
通过这套架构,我们成功利用闲置的国内高性能服务器搭建了对外服务的 Web 站点。
- 安全性:使用 TLS 封装 + AES 内容加密,无惧流量嗅探。
- 隐蔽性:海外 VPS 利用
proxyBindAddr锁死端口,仅允许 Nginx 本地转发,即使扫描 VPS 公网 IP 也看不到业务端口。 - 稳定性:利用二进制文件 +
rc.local实现了最基础且可靠的开机自启。
这大概是目前在无备案环境下,平衡“性能”与“合规”的最优解。












暂无评论内容