小程序页面画好了,请求却一直报错,这种情况很常见。数据库放在阿里云上,接口地址也填了,真机上还是连不通。多数时候问题不在业务代码,而是域名、证书、安全组、函数权限这几处没有对齐。这篇按实际操作的顺序走一遍整条链路,并给出可以照着改的配置思路。

先定架构:请求到底落在哪里
小程序运行在微信客户端里,不能直接连数据库,只能发 HTTPS 请求给服务端。所以所谓“连接”,就是让请求稳定地到达阿里云上的某个入口,再由入口转给真正干活的服务。
常见做法有三种。一是云服务器 ECS 加 Node.js 或 Java 后端,控制力最强,代价是要自己维护系统和进程。二是阿里云函数计算 FC 配合 API 网关,按调用量计费,省运维,适合接口不多、流量波动大的项目。三是微信云开发和阿里云混用,登录、支付这类能力仍走微信生态,业务数据或静态资源放在阿里云。
选哪种,主要看团队有没有运维精力,以及并发大概会有多高。一个只做表单提交、用户不多的小程序,没必要上集群。如果已经有直播或促销这类瞬时高峰,就要早点考虑弹性伸缩和负载均衡,否则上线当天再改会很被动。
前置准备:域名、备案和证书是卡点
这一步最容易被拖到最后。小程序要求请求地址必须是 HTTPS,域名要完成 ICP 备案,并且加入微信公众平台的服务器域名列表,否则请求会被直接拦截。
大致顺序如下:
- 在阿里云购买或迁入域名,先完成实名认证。
- 提交 ICP 备案。审核需要一段时间,别留到上线前一周才提交。
- 在 SSL 证书服务里申请证书,部署到 Nginx 或 API 网关上。证书链要完整,只装了终端证书、没配中间证书的情况很常见。
- 登录微信公众平台,在“开发管理”的服务器域名里填入接口域名。填的是域名,不带 IP,也不带端口。
我更建议把备案和证书当成项目的第一个节点。域名能不能正常访问,决定了后面的对接工作能不能开始。拿到可用的 HTTPS 域名之后再写业务代码,返工的概率会低很多。
服务端部署和安全组
以 ECS 为例,购买实例后先配安全组。外网只开放 80 和 443,数据库端口只对内网网段开放,不要图省事直接对公网放行。数据库一旦暴露在公网,扫几次端口就可能被找到。
然后安装 Nginx 做反向代理:监听 443,挂载证书,把 /api 路径转发到本机的 Node.js 进程。后端只监听 127.0.0.1,外部请求必须经过 Nginx,应用层的问题也被限制在这一层入口之后。
这里有个容易踩的坑。wx.request 不受浏览器跨域规则限制,但它对返回内容的格式很敏感。后端如果在报错时返回 HTML 错误页,前端拿到的就是一段看不懂的字符串,排查很费劲。建议接口统一返回 JSON,状态码和错误信息放在结构里,Nginx 层也保留原始请求日志,出问题时能直接对上。
小程序端:把请求地址集中管理
小程序端建议把所有请求收进一个工具模块,统一处理域名前缀、登录 token、超时和错误提示。页面里只调用方法,不直接写地址。
这个模块一般要做三件事:从本地缓存读取 token 并放进请求头;遇到 401 时清掉登录态并跳回登录页;对超时做有限次数的重试,次数不宜太多,否则用户等待时间会被拉长。地址放在独立的配置文件里,开发、测试、生产各一套。
这样做的好处是迁移时不用到处找。很多项目最初把地址写在每个页面里,等到要换域名或换区域,就得逐个文件改,漏一个就是线上故障。统一封装之后,换地址只需要改一处。
云函数方式:轻量接口怎么接
如果业务逻辑比较简单,比如几个查询接口加一个提交接口,用函数计算会更省事。小程序可以通过 HTTP 触发器直接调用,也可以让 API 网关统一管理路径、鉴权和限流。
这种方式的主要代价是冷启动。函数长时间没有被调用,第一次请求会明显变慢,对登录或下单这类关键接口影响较大。如果这些接口对响应时间敏感,可以考虑预留实例,代价是多付一部分费用。
鉴权也不能省。建议在网关层校验小程序登录后颁发的 session 或自定义 JWT,只放行带有效凭证的请求。否则接口地址一旦被抓包拿到,任何人都能反复调用。
常见报错怎么查
- request:fail url not in domain list:域名没有加进合法列表,或者请求里用了 IP 地址。先对照公众平台的配置,再检查代码里的地址拼写。
- SSL 握手失败:多半是证书链不完整。在服务端补上中间证书,重新部署后用在线工具检查一遍。
- 接口超时:先看安全组的出方向规则,再确认后端连数据库用的是内网地址还是公网地址。用公网地址连库,经常是超时的来源。
- 开发者工具正常,真机报错:开发者工具里勾选“不校验合法域名”时,请求会直接放行。真机没有这个开关,问题就会暴露出来。切到真机前,先取消这个勾选试一次。
排查时建议先用 curl 从外网直接请求接口。服务端能正常返回,说明问题在小程序一侧;服务端本身不通,就往前查证书、Nginx 和安全组,别在小程序代码里反复打转。
上线前的检查
上线前可以逐项核对:域名已备案,证书在有效期内;合法域名列表和生产地址一致;接口返回结构统一;数据库和内部服务没有暴露在公网;日志和告警已经接好。这几项都确认过,基础链路才算稳定。
阿里云连接小程序本身不难,难的是域名、证书、网络和代码要对齐。按上面的顺序推进,大部分问题都能在开发阶段暴露,而不是等用户反馈。