在轻量服务器(如腾讯云轻量应用服务器、阿里云ECS突发性实例等)上搭建微信小程序的 Node.js 后端,可以按照以下步骤进行操作。本文以 Ubuntu 系统为例,使用 Node.js + Express + Nginx + PM2 搭建一个稳定的小程序后端服务。
一、准备工作
-
购买并登录轻量服务器
- 推荐系统:Ubuntu 20.04 / 22.04
- 开放端口:确保防火墙开放
80(HTTP)、443(HTTPS)、3000(Node.js 测试端口)
-
获取域名并备案(可选但推荐)
- 微信小程序要求接口必须使用 HTTPS 协议。
- 建议购买一个域名,并申请免费 SSL 证书(如 Let’s Encrypt)。
二、安装必要软件
1. 更新系统
sudo apt update && sudo apt upgrade -y
2. 安装 Node.js(推荐使用 nvm)
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 重新加载 shell 配置
source ~/.bashrc
# 安装最新 LTS 版本的 Node.js
nvm install --lts
# 验证安装
node -v
npm -v
3. 安装 PM2(进程管理工具)
npm install -g pm2
4. 安装 Nginx(反向X_X + HTTPS)
sudo apt install nginx -y
启动并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
三、创建 Node.js 后端项目
1. 创建项目目录
mkdir /var/www/my-wx-backend
cd /var/www/my-wx-backend
2. 初始化项目
npm init -y
npm install express cors body-parser dotenv
3. 创建入口文件 app.js
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const app = express();
const PORT = process.env.PORT || 3000;
// 中间件
app.use(cors());
app.use(bodyParser.json());
// 示例接口:获取用户信息
app.get('/api/user', (req, res) => {
res.json({ code: 0, data: { name: '张三', id: 1 } });
});
// 微信登录示例(需调用微信 API)
app.post('/api/login', async (req, res) => {
const { code } = req.body;
if (!code) {
return res.status(400).json({ error: '缺少 code' });
}
// 这里调用微信接口换取 openid(实际开发中需要 appId 和 appSecret)
// https://api.weixin.qq.com/sns/jscode2session?appid=xxx&secret=xxx&js_code=code&grant_type=authorization_code
res.json({ code: 0, msg: '登录成功', openid: 'mock_openid_123' });
});
app.listen(PORT, '0.0.0.0', () => {
console.log(`Server is running on http://0.0.0.0:${PORT}`);
});
4. 启动项目(测试)
node app.js
访问 http://你的服务器IP:3000/api/user 测试是否正常。
四、使用 PM2 管理进程
pm2 start app.js --name wx-backend
# 设置开机自启
pm2 startup
pm2 save
查看状态:
pm2 status
五、配置 Nginx 反向X_X + HTTPS
1. 配置 Nginx 站点
编辑配置文件:
sudo nano /etc/nginx/sites-available/wx-backend
内容如下(HTTP 版本):
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/wx-backend /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
2. 使用 Certbot 配置 HTTPS(Let’s Encrypt 免费证书)
安装 Certbot:
sudo apt install certbot python3-certbot-nginx -y
申请并配置 SSL 证书:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Certbot 会自动修改 Nginx 配置,启用 HTTPS 并设置自动续期。
六、小程序端调用接口
在微信小程序中发起请求:
wx.request({
url: 'https://yourdomain.com/api/user',
method: 'GET',
success(res) {
console.log(res.data);
}
})
注意:域名必须在小程序管理后台的「开发管理」→「开发设置」→「服务器域名」中配置。
七、安全与优化建议
-
环境变量管理
- 使用
.env文件存储敏感信息(如数据库密码、微信密钥) - 安装
dotenv:require('dotenv').config()
- 使用
-
日志监控
pm2 logs wx-backend -
数据库连接
- 可搭配 MongoDB / MySQL / PostgreSQL,注意安全组和数据库权限。
-
定期备份
- 备份代码、数据库、SSL 证书。
-
防止攻击
- 使用
helmet中间件增强安全性 - 限制请求频率(如
rate-limit)
- 使用
总结
✅ 你已完成:
- 在轻量服务器上部署 Node.js 后端
- 使用 Nginx 反向X_X并配置 HTTPS
- 通过 PM2 稳定运行服务
- 小程序可通过 HTTPS 调用接口
如有需要,我可以提供完整的 GitHub 示例项目结构或 Docker 部署方案。欢迎继续提问!
CLOUD技术博