
做微信小程序,前端界面好写,真正麻烦的是后端——域名要备案、要 HTTPS、服务器要稳定、数据库要安全。这篇按阿里云技术方案的架构图,把小程序后端的四层结构拆清楚,每一层干什么、为什么要这么配。
一、整体架构:小程序端 → 云端
小程序的请求链路很简单:用户打开小程序 → JsCore 发起 HTTPS 请求 → 经过 DNS 解析到 ECS → ECS 处理请求并读写 RDS 数据库 → 返回数据。
微信小程序 (JsCore/WebView)
│ HTTPS
▼
DNS 解析
│
▼
ECS (Web subnet) ──→ RDS (DB subnet)
但这里有几个硬性要求,是微信小程序平台规定的:
- 服务器域名必须备案:没备案的域名,小程序请求直接被拦
- 必须 HTTPS:不支持 HTTP,开发阶段可以关校验,上线必须配 SSL 证书
- 域名必须在小程序后台配置:不在白名单里的请求域名会被拒绝
这三条是入门门槛,也是很多新手卡住的地方。
二、第一层:ECS 跑 Web 服务
ECS(云服务器)上跑的是后端 Web 应用,比如博客、商城、工具类 API。它负责:
- 接收小程序发来的 HTTPS 请求
- 处理业务逻辑
- 读写数据库
- 返回 JSON 数据
为什么用 ECS 而不是 Serverless?因为这个方案是博客类应用,有持续的请求流量,常驻 ECS 比按量付费的函数计算更经济。如果是低频工具类应用,函数计算可能更合适。
三、第二层:RDS 存数据
RDS(关系型数据库服务)MySQL 存业务数据。为什么不用 ECS 自己装 MySQL?
- 高可用:RDS 主备架构,单台数据库挂了自动切换,ECS 自己装数据库挂了就得手动恢复
- 备份:RDS 自动备份,误删数据可以回滚
- 性能:RDS 有参数调优、读写分离、只读实例等扩展能力
- 安全:数据库放在独立的 DB subnet,和 Web subnet 网络隔离,外部无法直接访问
架构图里有个细节:ECS 在 Web subnet,RDS 在 DB subnet,两者都在同一个 VPC(192.168.0.0/16)里。这样 ECS 能访问 RDS,但公网访问不了数据库,安全等级高很多。
四、第三层:DNS 和 SSL 证书
DNS:把你买的域名(比如 api.example.com)解析到 ECS 的公网 IP。用户在小程序里写的是域名,不是 IP,因为 IP 会变,域名是固定入口。
SSL 证书:微信小程序要求 HTTPS,所以要在 ECS 上部署 SSL 证书。部署方式通常是 Nginx 反向代理——Nginx 监听 443 端口,配置证书文件,把请求转发给后端应用(比如 Node.js 跑在 3000 端口)。
Nginx (443) ──HTTPS──→ 小程序客户端
│
└──HTTP──→ Node.js (localhost:3000) ──→ RDS
这个 Nginx + SSL 的组合是最常见的部署方式,证书可以从云厂商的数字证书管理服务免费申请。
五、第四层:VPC 网络隔离
VPC(虚拟私有云)相当于你在云上划出一个独立的网络空间。这个方案里 VPC 分了两个子网:
- Web subnet:放 ECS,有公网 IP,能被小程序访问
- DB subnet:放 RDS,没有公网 IP,只有 Web subnet 里的 ECS 能访问
这样即使 Web 服务器被攻破,攻击者也无法直接从公网连到数据库。数据库密码、数据泄露的风险大大降低。
六、部署步骤总结
按这个架构,从零部署一个小程序后端的步骤是:
- 买域名,做 ICP 备案(这个最耗时,通常 1-2 周)
- 申请免费 SSL 证书
- 创建 ECS 实例,配置安全组(开放 80/443 端口)
- 创建 RDS MySQL 实例,设置白名单(只允许 ECS 访问)
- ECS 上装 Nginx + 后端应用代码
- Nginx 配置 SSL 证书和反向代理
- DNS 解析域名到 ECS 公网 IP
- 微信小程序后台配置 request 合法域名
- 小程序端发请求测试
整个过程如果域名备案已经搞定,云资源部署大概 1 小时。备案是最长的等待项。
七、写在最后
微信小程序后端看起来东西多,但拆开就是四层:ECS 跑应用、RDS 存数据、DNS+SSL 做入口、VPC 做隔离。理解了每一层的作用,就知道为什么要这么配,出了问题也能定位是哪一层的事。
完整的部署方案和产品组合可以看官方技术方案页——查看微信小程序快速搭建完整方案。具体配置以页面实际展示为准。
你做小程序时后端是怎么搭的?评论区交流。