阿里云服务器搭建小程序后端是指在阿里云ECS实例上部署HTTPS接口服务,为小程序提供用户登录、数据交互、业务逻辑处理和数据库读写能力。
创建并配置ECS实例
登录阿里云控制台,进入云服务器ECS页面,地域建议选择与小程序用户主要所在地一致的区域,大陆地域必须完成域名备案后才能使用,操作系统选择Ubuntu 22.04 LTS或CentOS 7.9,配置根据业务量选择2核4GB起步,创建实例时设置root密码,并记录公网IP,实例创建完成后进入安全组配置,在入方向放行22端口用于SSH登录,放行80和443端口用于Web服务,其他端口如3306数据库端口不建议对公网开放。

使用本地终端连接服务器:
sshroot@服务器公网IP
首次登录后建议创建普通用户并赋予sudo权限,避免长期使用root操作。
安装基础运行环境
更新软件包索引并安装常用工具:
aptupdate&&aptupgrade-y aptinstall-ycurlwgetgitbuild-essential
小程序后端语言可选Node.js、PHP、Java或Go,以Node.js 18为例,使用NodeSource源安装:
curl-fsSLhttps://deb.nodesource.com/setup_18.x|bash- aptinstall-ynodejs
安装完成后执行node -v和npm -v确认版本,安装MySQL数据库:
aptinstall-ymysql-server systemctlenablemysql systemctlstartmysql
使用mysql_secure_installation设置root密码并移除匿名用户,创建小程序专用数据库和账号:
CREATEDATABASEmini_appDEFAULTCHARACTERSETutf8mb4; CREATEUSER'mini_user'@'localhost'IDENTIFIEDBY'强密码'; GRANTALLPRIVILEGESONmini_app.*TO'mini_user'@'localhost'; FLUSHPRIVILEGES;
如果业务需要缓存或会话共享,可以安装Redis并设置为本地监听。
开发后端接口
在服务器上创建项目目录并初始化Node.js项目:
mkdir-p/var/www/mini-api&&cd/var/www/mini-api npminit-y npminstallexpressmysql2jsonwebtokenaxios
创建app.js文件,编写基础接口,登录接口接收小程序端传来的code,使用AppID和AppSecret调用微信接口换取openid,查询数据库是否存在用户,不存在则创建,最后返回自定义登录态token,数据接口需要通过请求头中的token校验用户身份,所有接口必须使用HTTPS协议,小程序端不允许请求明文HTTP接口,接口返回格式统一为JSON,例如{"code":0,"data":{},"msg":"success"}。
将数据库连接配置放在环境变量或独立配置文件中,不要硬编码在代码里,对于涉及用户手机号、支付金额等敏感数据,后端需要做参数校验和权限校验,避免越权访问。
配置Nginx反向代理
安装Nginx:
aptinstall-ynginx systemctlenablenginx systemctlstartnginx
在/etc/nginx/conf.d/下创建小程序API站点配置,将域名请求转发到本地Node服务:
server{
listen80;
server_nameapi.example.com;
location/{
proxy_passhttp://127.0.0.1:3000;
proxy_set_headerHost$host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
}
}保存后执行nginx -t检查配置,再执行systemctl reload nginx使其生效,此时可以通过域名访问HTTP接口,但小程序要求必须为HTTPS,因此需要配置SSL证书。
申请并配置HTTPS证书
在阿里云SSL证书服务中申请免费证书,或者使用certbot申请Let's Encrypt证书,以certbot为例:
aptinstall-ycertbotpython3-certbot-nginx certbot--nginx-dapi.example.com
certbot会自动修改Nginx配置并增加SSL证书引用,证书签发完成后,Nginx配置中会包含ssl_certificate和ssl_certificate_key,同时建议将HTTP请求301跳转到HTTPS,执行certbot renew --dry-run测试自动续期是否正常。
配置完成后,用浏览器访问https://api.example.com应看到接口返回而不是证书错误,进入微信小程序管理后台,在开发管理下的服务器域名配置中,将https://api.example.com添加到request合法域名,如果需要上传图片或下载文件,还要配置uploadFile和downloadFile合法域名。
使用PM2守护Node进程
直接使用node app.js启动服务在终端关闭后会退出,需要进程守护工具,安装PM2:
npminstall-gpm2 cd/var/www/mini-api pm2startapp.js--namemini-api pm2save pm2startupsystemd
执行pm2 status查看进程状态,pm2 logs mini-api查看日志,服务崩溃时PM2会自动拉起,修改代码后执行pm2 reload mini-api平滑重启,避免接口中断。
小程序端接入
小程序端通过wx.request调用后端接口时,URL必须写完整的HTTPS地址,例如登录接口:
wx.request({
url:'https://api.example.com/api/login',
method:'POST',
data:{code:res.code},
success:(resp)=>{
//保存token
}
})后端返回的token可以存储在小程序本地缓存中,后续请求在请求头中携带Authorization: Bearer token,小程序不校验域名备案,但阿里云服务器如果使用大陆地域,域名必须完成ICP备案,否则请求会被拦截,备案需要在阿里云备案系统中提交资料,周期一般为1到2周,建议提前办理。
静态资源与文件上传
小程序中的图片、音视频等静态文件不建议直接存放到ECS本地磁盘,容易造成存储扩展困难和备份复杂,可以将文件上传到阿里云OSS对象存储,后端接口返回OSS的临时上传凭证或直传地址,如果需要本地上传,可以使用multer中间件处理上传文件,并将文件存放在/var/www/uploads目录,通过Nginx配置location /uploads以HTTPS方式对外提供访问,无论使用哪种方式,文件访问地址必须包含在合法域名中,且为HTTPS协议。
安全加固
数据库3306端口不要对公网开放,Redis设置密码并监听127.0.0.1,ECS安全组只开放22、80、443端口,22端口建议修改为高位端口并限制来源IP,后端接口对每个请求做身份校验,尤其是涉及用户数据修改的接口,重要操作增加频率限制,例如登录接口每分钟最多10次,对用户输入使用参数化查询防止SQL载入,对返回数据做脱敏处理,不暴露用户手机号、身份证号等敏感字段,定期更新系统补丁和依赖包,使用apt update && apt upgrade保持系统安全。
常见问题处理
如果小程序请求返回“url not in domain list”,说明合法域名未配置或配置的域名与实际请求域名不一致,如果HTTPS证书无效,检查证书是否过期、域名是否匹配,如果接口返回502,查看Nginx代理地址是否正确,Node进程是否在监听3000端口,PM2进程状态是否正常,如果数据库连接失败,确认数据库服务是否启动,账号密码以及监听地址是否正确,小程序真机调试时如果请求失败而开发者工具正常,多为域名备案问题或证书链不完整,使用证书检测工具检查证书链,修改合法域名后小程序需要在开发者工具中重新编译并等待配置下发。