文章

把后端藏在一台便宜 VPS 后面:Nginx + WireGuard 盾机怎么搭、哪些坑先看清

静水流深 4小时前 · 1,763 字 · 约 6 分钟 · 11 次阅读
我发布了文章:《把后端藏在一台便宜 VPS 后面:Nginx + WireGuard 盾机怎么搭、哪些坑先看清》

隔三差五就有人在社区问:有没有月付一两美元的小机,专门挡在应用服务器前面跑 Nginx 反代和 WireGuard?需求很实在,但也最容易被“便宜”带偏——盾机选错,你不是在加一层保护,是在加一个故障点。

盾机到底替你做了什么

  • 后端不再直接接客:应用只在隧道内网监听,公网扫不到它的端口。
  • 源站 IP 不出现在 DNS 里:想打你,得先过盾机这一关。
  • 杂活全交给小机:TLS 终止、证书续签、压缩、限流,512MB 内存跑得动。

代价同样清楚:多一跳延迟,流量进盾机算一次、出盾机再算一次,盾机一挂整站一起挂。

什么人值得这么干

后端放在便宜的大盘机或独服上、只有一两个对外域名、月流量 1TB 上下、能接受自己维护两套系统——这套架构划算。反过来,下载站、大文件传输、对首字节极敏感的接口,或者后端本来已经躲在 CDN 后面,再插一层盾机基本是给自己找事。

动手:七步搭起来

  1. 挑机器:必须 KVM(WireGuard 要内核模块或 userspace 实现,容器型虚拟化经常跑不起来);1 vCPU + 512MB~1GB 内存足够;机房选在离用户近的地方;流量按“预计月流量的两倍”买;下单前先 ping 商家的测试 IP。
  2. 生成密钥:两台机器都跑 wg genkey | tee privatekey | wg pubkey > publickey,私钥权限设 600。
  3. 建隧道:盾机 wg0 用 10.0.0.1/24、监听 51820/UDP,后端 10.0.0.2/24;后端在家宽或 NAT 后面,就加一行 PersistentKeepalive = 25——25 秒是官方给的通用值。
  4. 后端只听内网:应用和数据库 bind 到 10.0.0.2,公网防火墙只放行来自盾机 IP 的 22 端口,或者干脆只留商家控制台。
  5. 盾机转发proxy_pass http://10.0.0.2:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;,并把 X-Forwarded-For 一并往下传。
  6. 把真实 IP 还给后端:这步最常被忘。后端 Nginx 上 realip 模块配 set_real_ip_from 10.0.0.1;real_ip_header X-Forwarded-For;real_ip_recursive on;。不配的话,日志、限流、风控看到的客户端全是盾机那个内网地址。real_ip_recursive 关闭时取头里最后一个地址,打开时取最后一个“不可信”地址——中间还夹着别的代理,就必须打开。
  7. 验收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 代理模块文档

登录 后参与评论

还没有人评论,来抢沙发