基于 宝塔面板 + 腾讯云 环境,从 0 到上线(域名 + HTTPS),一步步完成 Node.js(Koa)项目部署。

一、准备环境

1. 服务器准备

  • 已购买云服务器(腾讯云 / 阿里云等)
  • 已安装宝塔面板
  • 已安装 Docker(宝塔 → Docker 管理器)

2. 项目准备

确保你的项目结构如下:

Go
project/
├── app.js
├── package.json
├── package-lock.json
├── routers/
├── middleware/

二、编写 Dockerfile

在项目根目录创建:

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
  • 标签:
Makefile
koa-app:latest

点击【提交】


四、创建容器

👉 Docker → 容器 → 创建容器

关键配置:

项目 配置
镜像 koa-app
端口映射 3000 → 9527
启动 开启

端口说明:

Makefile
浏览器:3000 → 容器:9527

五、修改 Node 监听地址(关键)

确保你的 app.js

JavaScript
const port = process.env.PORT || 9527;

app.listen(port, '0.0.0.0', () => {
  console.log(`server is starting at port ${port}`);
});

六、开放端口

1. 腾讯云安全组

放行:

Text
端口:3000
协议:TCP
来源:0.0.0.0/0

2. 宝塔防火墙

放行:

YAML
3000

七、测试访问

浏览器访问:

Shell
http://服务器IP:3000/home

成功说明 Docker 部署完成 ✅


八、绑定域名(重点)

1. 域名解析

在腾讯云添加:

类型 主机记录 记录值
A api 服务器IP

2. 宝塔创建站点

👉 网站 → 添加站点

填写:

  • 域名:api.xxx.com
  • 其他默认即可

九、配置反向代理(核心)

进入站点 → 设置 → 反向代理

添加:

Perl
目标URL:http://127.0.0.1:9527
发送域名:$host

十、Nginx 配置(推荐)

修改为:

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";
}

十一、访问域名

Shell
http://api.xxx.com/home

十二、开启 HTTPS

👉 宝塔 → 网站 → SSL

选择:

  • Let’s Encrypt

启用后访问:

Shell
https://api.xxx.com/home

十三、完整架构图

CSS
浏览器
   ↓
域名 api.xxx.com
   ↓
Nginx(宝塔)
   ↓
127.0.0.1:9527
   ↓
Docker 容器
   ↓
Node(Koa)

十四、常见问题

1. 无法访问

检查:

  • 容器是否运行(docker ps)
  • 端口是否开放
  • Node 是否监听 0.0.0.0

2. 502 错误

说明:

  • Node 服务未启动
  • 端口错误

3. 跨域问题

已使用:

JavaScript
cors()

一般不会有问题


十五、进阶建议

1. 使用 docker-compose

统一管理:

  • Node
  • MySQL
  • Redis

2. 多域名结构

域名 用途
api.xxx.com 后端
www.xxx.com 前端
admin.xxx.com 后台

3. 安全优化

  • 不暴露容器端口(仅 127.0.0.1)
  • 使用 HTTPS
  • 添加限流(你已实现)

总结

完整流程:

Text
写 Dockerfile → 构建镜像 → 创建容器 → 映射端口
→ 测试IP访问 → 配置域名 → 反向代理 → 上HTTPS

👉 到这里,你已经具备 生产级 Node 服务部署能力 🚀

阅读进度 0%