基于 宝塔面板 + 腾讯云 环境,从 0 到上线(域名 + HTTPS),一步步完成 Node.js(Koa)项目部署。
一、准备环境
1. 服务器准备
- 已购买云服务器(腾讯云 / 阿里云等)
- 已安装宝塔面板
- 已安装 Docker(宝塔 → Docker 管理器)
2. 项目准备
确保你的项目结构如下:
project/
├── app.js
├── package.json
├── package-lock.json
├── routers/
├── middleware/
二、编写 Dockerfile
在项目根目录创建:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm config set registry https://registry.npmmirror.com \
&& npm install --production
COPY . .
EXPOSE 9527
CMD ["node", "app.js"]
三、构建 Docker 镜像(宝塔)
进入宝塔:
👉 Docker → 镜像 → 构建镜像
填写:
- Dockerfile:选择项目中的 Dockerfile
- 标签:
koa-app:latest
点击【提交】
四、创建容器
👉 Docker → 容器 → 创建容器
关键配置:
| 项目 | 配置 |
|---|---|
| 镜像 | koa-app |
| 端口映射 | 3000 → 9527 |
| 启动 | 开启 |
端口说明:
浏览器:3000 → 容器:9527
五、修改 Node 监听地址(关键)
确保你的 app.js:
const port = process.env.PORT || 9527;
app.listen(port, '0.0.0.0', () => {
console.log(`server is starting at port ${port}`);
});
六、开放端口
1. 腾讯云安全组
放行:
端口:3000
协议:TCP
来源:0.0.0.0/0
2. 宝塔防火墙
放行:
3000
七、测试访问
浏览器访问:
http://服务器IP:3000/home
成功说明 Docker 部署完成 ✅
八、绑定域名(重点)
1. 域名解析
在腾讯云添加:
| 类型 | 主机记录 | 记录值 |
|---|---|---|
| A | api | 服务器IP |
2. 宝塔创建站点
👉 网站 → 添加站点
填写:
- 域名:
api.xxx.com - 其他默认即可
九、配置反向代理(核心)
进入站点 → 设置 → 反向代理
添加:
目标URL:http://127.0.0.1:9527
发送域名:$host
十、Nginx 配置(推荐)
修改为:
location / {
proxy_pass http://127.0.0.1:9527;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
add_header Cache-Control "no-store";
}
十一、访问域名
http://api.xxx.com/home
十二、开启 HTTPS
👉 宝塔 → 网站 → SSL
选择:
- Let’s Encrypt
启用后访问:
https://api.xxx.com/home
十三、完整架构图
浏览器
↓
域名 api.xxx.com
↓
Nginx(宝塔)
↓
127.0.0.1:9527
↓
Docker 容器
↓
Node(Koa)
十四、常见问题
1. 无法访问
检查:
- 容器是否运行(docker ps)
- 端口是否开放
- Node 是否监听 0.0.0.0
2. 502 错误
说明:
- Node 服务未启动
- 端口错误
3. 跨域问题
已使用:
cors()
一般不会有问题
十五、进阶建议
1. 使用 docker-compose
统一管理:
- Node
- MySQL
- Redis
2. 多域名结构
| 域名 | 用途 |
|---|---|
| api.xxx.com | 后端 |
| www.xxx.com | 前端 |
| admin.xxx.com | 后台 |
3. 安全优化
- 不暴露容器端口(仅 127.0.0.1)
- 使用 HTTPS
- 添加限流(你已实现)
总结
完整流程:
写 Dockerfile → 构建镜像 → 创建容器 → 映射端口
→ 测试IP访问 → 配置域名 → 反向代理 → 上HTTPS
👉 到这里,你已经具备 生产级 Node 服务部署能力 🚀
阅读进度 0%
private note
交流
文章暂不开放公开评论。如果你有想法、问题或建议,欢迎私下联系站长。
联系站长 →