隔三差五就有人在社区问:有没有月付一两美元的小机,专门挡在应用服务器前面跑 Nginx 反代和 WireGuard?需求很实在,但也最容易被“便宜”带偏——盾机选错,你不是在加一层保护,是在加一个故障点。
盾机到底替你做了什么
- 后端不再直接接客:应用只在隧道内网监听,公网扫不到它的端口。
- 源站 IP 不出现在 DNS 里:想打你,得先过盾机这一关。
- 杂活全交给小机:TLS 终止、证书续签、压缩、限流,512MB 内存跑得动。
代价同样清楚:多一跳延迟,流量进盾机算一次、出盾机再算一次,盾机一挂整站一起挂。
什么人值得这么干
后端放在便宜的大盘机或独服上、只有一两个对外域名、月流量 1TB 上下、能接受自己维护两套系统——这套架构划算。反过来,下载站、大文件传输、对首字节极敏感的接口,或者后端本来已经躲在 CDN 后面,再插一层盾机基本是给自己找事。
动手:七步搭起来
- 挑机器:必须 KVM(WireGuard 要内核模块或 userspace 实现,容器型虚拟化经常跑不起来);1 vCPU + 512MB~1GB 内存足够;机房选在离用户近的地方;流量按“预计月流量的两倍”买;下单前先 ping 商家的测试 IP。
- 生成密钥:两台机器都跑
wg genkey | tee privatekey | wg pubkey > publickey,私钥权限设 600。 - 建隧道:盾机
wg0用 10.0.0.1/24、监听 51820/UDP,后端 10.0.0.2/24;后端在家宽或 NAT 后面,就加一行PersistentKeepalive = 25——25 秒是官方给的通用值。 - 后端只听内网:应用和数据库 bind 到 10.0.0.2,公网防火墙只放行来自盾机 IP 的 22 端口,或者干脆只留商家控制台。
- 盾机转发:
proxy_pass http://10.0.0.2:8080;、proxy_set_header Host $host;、proxy_set_header X-Real-IP $remote_addr;,并把 X-Forwarded-For 一并往下传。 - 把真实 IP 还给后端:这步最常被忘。后端 Nginx 上 realip 模块配
set_real_ip_from 10.0.0.1;、real_ip_header X-Forwarded-For;、real_ip_recursive on;。不配的话,日志、限流、风控看到的客户端全是盾机那个内网地址。real_ip_recursive关闭时取头里最后一个地址,打开时取最后一个“不可信”地址——中间还夹着别的代理,就必须打开。 - 验收:
wg show看 latest handshake 有没有;在盾机上 curl 后端内网地址确认通;从外网扫后端公网端口确认不通;最后看一眼后端日志里的 remote_addr 是不是真实客户端 IP。
两条路:自己拉隧道,还是用商家内网
两台机器在同一家、同一区域,商家又提供私有网络,可以省掉 WireGuard:延迟更低,也不吃 CPU。以 LayerOne 的 VNet 为例,私有网段是 RFC1918,每账号默认 10 个,一台机器能挂多个 VNet,但平台不在 VNet 之间做路由、也不提供 NAT,进出 VNet 的流量得靠你自己的防火墙机器。它解决的是“隔离”,不是“加密”,更不管跨机房。
只要两台机器分属不同商家、不同地区,或者后端就在你家里、办公室,还是老老实实用 WireGuard。
风险清单
- 盾机是新单点:挑有 99.9% SLA 和浏览器控制台的商家,SSH 配错还能爬回去。
- 带宽双计:按两倍估,超额单价先问清,别等账单出来。
- DDoS 防护看层:便宜机自带的一般是 L3/L4 清洗,应用层 CC 得在盾机上自己限流。
- 证书在盾机上:盾机被拿下等于全站明文,补丁和密钥权限别偷懒。
- 真实 IP 会漏:邮件头、Webhook 回调、历史 DNS 记录,任何一处裸奔,藏 IP 就白干了。
命令与参数取自 WireGuard 和 NGINX 官方文档,这套组合本站没有上机实测,配置按你自己的流量和机房调。两个入口留着备用:WireGuard 快速开始、NGINX 代理模块文档。
登录 后参与评论