1.
选择香港云服务与域名
- 说明:优先选择有静态公网 IP 的香港云主机(AWS 香港、阿里云香港、腾讯云香港或本地机房)。
- 步骤:购买实例,预留静态公网 IP;注册域名(推荐 .com / .hk),并在域名服务商添加 A 记录指向香港公网 IP;TTL 可设为 600 秒便于调试。
2.
开启必要端口与安全组设置
- 说明:微信回调与小程序请求必须能访问 80/443。
- 步骤:在云平台安全组放行 80、443 端口;本机 firewall(ufw/iptables)也应放行对应端口;确认没有内部代理或透明代理影响请求。
3.
安装并配置 Nginx 作为反向代理
- 说明:使用 Nginx 做证书自动续期与负载转发。
- 步骤示例:在 Ubuntu 上执行
sudo apt update && sudo apt install nginx;创建 /etc/nginx/sites-available/yourdomain.conf,配置 server_name、listen 80、listen 443 ssl、location /wechat/ -> proxy_pass http://127.0.0.1:3000;测试
sudo nginx -t 并重启。
4.
申请并安装 SSL(Let's Encrypt)
- 说明:微信要求 HTTPS(且证书必须有效)。
- 步骤:安装 certbot(如
sudo apt install certbot python3-certbot-nginx),运行
sudo certbot --nginx -d yourdomain.com 自动配置;设置 cron 或 systemd timer 确保续期。
5.
后端服务编写:验签与消息路由
- 说明:公众号回调需校验 signature、timestamp、nonce,且若使用加密模式还要解密消息。
- 步骤示例(Node.js Express):在 /wechat 路由先实现 GET 验证(返回 echostr),POST 解析 body 为 XML,校验签名(使用 token+timestamp+nonce 的 sha1),若启用加密则用微信提供的 AES 解密库进行解密;再根据 MsgType 路由处理。
6.
公众号后台(mp.weixin.qq.com)设置
- 说明:将刚配置的 HTTPS 回调地址填入“服务器配置”。
- 步骤:进入“基本配置”->“服务器配置”,填写 URL(例如 https://yourdomain.com/wechat),Token(自定义)、消息加解密密钥(EncodingAESKey)可生成并与后端一致;选择明文/兼容/安全模式并保存并验证。
7.
小程序后台(mp.weixin.qq.com)域名配置
- 说明:小程序需要在「开发设置」中配置合法请求域名、socket 域名、uploadFile、downloadFile 域名。
- 步骤:在“开发设置”->“服务器域名”中添加 https://yourdomain.com(注意需备案规则不适用于香港);保证后台 TLS 配置通过微信校验,必要时上传业务接口证书。
8.
跨域、CORS 与接口签名
- 说明:小程序请求后端通常是直接 HTTPS 调用,注意允许微信小程序的跨域。
- 步骤:在 Nginx 或后端设置 Access-Control-Allow-Origin 为小程序域名或 *(调试时),并实现接口签名/鉴权(如 JWT 或自定义签名)防止被滥用。
9.
开发调试与本地联调技巧
- 说明:开发阶段可以使用临时工具,生产须使用公网域名。
- 步骤:使用 ngrok/http-tunnel 暴露本地测试,但上线必须换成正式域名;使用微信开发者工具的“网络”查看请求;在服务器启用详细日志(Nginx access/error 与后端日志)以便排查。
10.
高可用与监控建议
- 说明:生产建议多 AZ 或负载均衡与自动重启策略。
- 步骤:部署进程管理(pm2/systemd)、配置 Nginx upstream 多节点、使用健康检查与日志告警(Prometheus + Grafana 或云监控)。
11.
常见问题与排查清单
- 说明:包括证书不被识别、回调 400/401、域名未通过校验等。
- 步骤:逐项检查(DNS 指向、端口开放、证书链完整、时间是否同步、Token/EncodingAESKey 是否一致、微信后台是否已保存并验证)。
12.
问:为什么要把服务器放在香港?
- 答:香港机房对内地与国际访问延迟均衡,且无需大陆 ICP 备案,适合面向两地用户的公众号/小程序后台部署,同时更容易获得全球 CDN 与证书兼容性。
13.
问:微信回调一直验证失败怎么办?
- 答:按顺序检查:域名能否访问 443;证书是否完整(Root + Intermediate);在微信后台填写的 URL、Token、EncodingAESKey 与后端一致;服务器时间是否同步;查看后端日志确认是否收到了 GET 验证请求并返回 echostr。
14.
问:小程序的合法域名配置为何总是无法通过?
- 答:确认使用的是公网可访问的域名并已绑定有效 SSL;域名必须没有使用通配符且微信要求域名为精确匹配;若使用 CDN,确保 CDN 的证书及回源设置允许微信校验;最后在小程序后台提交并等待审核。
来源:香港微信服务器适配公众号与小程序的部署最佳实践分享