服务器迁移,小程序业务最容易出问题。用户打开页面空白,或是弹出网络异常,后台查看服务器运行正常,一时找不到故障点。不要直接怀疑代码,多半是域名解析或者配置没有同步更新。按下面顺序排查,基本定位问题。
首先确认域名解析已经指向新服务器。电脑打开命令行,ping小程序接口域名,核对返回IP是否为新机器地址。IP依旧是旧服务器,代表DNS记录没修改或是还没生效。DNS生效时间几分钟到几小时不等,取决于之前设置的TTL值。想要快速验证,可以用在线多地ping工具,比如站长工具、ipip.net,多地区测试。各地返回IP不一致,代表解析还在全球同步,耐心等待,不用修改代码。

解析已经更新,下一步检查新服务器是否绑定该域名。Nginx或者Apache配置文件,server_name填写小程序业务域名。不少人迁移只拷贝网站文件,忘记同步配置文件,请求到达服务器,找不到对应站点,返回404或者默认页面。浏览器直接访问接口地址验证,如果返回不是预期JSON或者报错,而是Nginx欢迎页,就是域名绑定没有配置。
HTTPS是小程序硬性要求,微信强制所有请求走加密连接。服务器迁移之后,SSL证书很容易遗漏。旧服务器证书文件没有迁移,或是迁移之后配置文件路径写错。Nginx启动报错,或是启动成功但HTTPS握手失败。浏览器访问 https://你的域名,查看地址栏安全锁标识。提示证书无效、连接不安全,使用在线SSL检测工具检查证书链完整性、有效期。证书过期和证书链缺失是两类问题,过期做续期,证书链不全就要补充中间证书。
微信小程序后台配置也要核对。登录小程序管理后台,开发→开发设置→服务器域名。分为request合法域名、socket合法域名、uploadFile合法域名、downloadFile合法域名。服务器迁移,域名不变,这些配置不用改动。如果更换域名,或是从HTTP升级HTTPS,这里必须同步更新。修改保存即时生效,已发布小程序会存在缓存,开发者工具重新编译之后真机测试。
还有个坑是微信业务域名校验文件。小程序页面使用web-view加载网页,需要在服务器根目录放置微信校验文件。服务器迁移,这个文件经常遗漏。现象就是web-view页面打不开,提示业务域名校验失败。去小程序后台下载最新校验文件,放到新服务器网站根目录,保证可以通过 https://你的域名/校验文件名.txt 直接访问。
服务器防火墙和安全组别漏掉。新机器默认大概率只开放22端口,80、443端口没有放行。云控制台安全组入方向规则确认开启80和443。部分服务商默认封禁80端口,需要单独申请解封。从已经配置完成旧机器迁移到全新服务器,很容易忽略这一步,旧机器放行端口,新机不会继承。
测试不要只连办公室WiFi,切换手机流量测试。办公室WiFi可能存在内网DNS缓存,或是代理,本地访问正常,普通用户访问异常。手机关闭WiFi,使用4G、5G打开小程序,走完核心业务流程。流量访问异常,才是真实故障;流量正常WiFi异常,问题出在本地网络。多找移动、联通、电信不同运营商手机测试,排除线路差异。
上面全部检查完毕依旧异常,打开微信开发者工具查看网络请求。切换到Network面板,复现小程序请求,查看详细报错。DNS解析失败、连接超时、SSL握手失败、服务器返回500,不同报错对应不同故障环节。连接超时多是防火墙安全组;SSL握手失败对应证书;返回500是后端代码或者数据库连接故障;返回404是Nginx配置或是路径问题。开发者工具的报错信息,比用户看到的网络异常提示详细得多。
最后提CDN。业务使用CDN加速,服务器迁移之后,CDN控制台回源地址修改为新服务器IP。不修改,CDN持续请求旧机器,旧服务器释放之后,用户请求大面积报错。CDN缓存还要刷新,不然用户持续读取旧缓存内容。迁移计划里CDN经常放到最后处理,但影响范围最大,优先处理。