2157 技术博客
专注于 Web 开发、Node.js 后端架构与云原生部署。
记录全栈开发路上的踩坑经验与实战总结。
📚 近期技术分享
使用 Docker 快速搭建多租户 SaaS 平台的踩坑实录
一、背景介绍
最近在开发一套面向中小企业的项目管理系统,要求支持多公司隔离(SaaS 模式)。为了降低服务器成本,我选择了一台 2核2G4M 的腾讯云轻量应用服务器。
如果直接安装 Node.js 和 MySQL,环境配置容易冲突。于是,我采用了 Docker Compose 进行一键编排部署。
二、核心 Docker 配置文件
编写 docker-compose.yml 是最关键的一步。以下是我的配置代码:
version: '3.8'
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root123456
ports:
- "3306:3306"
backend:
image: node:18-alpine
ports:
- "3000:3000"
command: sh -c "npm install && node index.js"
depends_on:
- db
三、踩坑与经验
1. 端口映射问题:一开始忘记在腾讯云后台的“防火墙”放行 3000 端口,导致本地死活连不上,排查了好久。
2. 数据卷挂载:MySQL 容器重启后数据会丢失,必须使用 `volumes` 将数据库文件挂载到宿主机。
3. 多租户隔离:所有的表必须带有 `company_id` 字段,后端在写 API 的时候,必须强制从 Token 中解析公司 ID,防止横向越权访问。
Node.js 接口开发:从本地 LocalStorage 到云端 MySQL 的平滑迁移
一、为什么放弃 LocalStorage?
早期版本的 HTML 原型,数据存在浏览器里,换个电脑就没了。为了让数据真正属于用户,必须上云。
二、Express 与连接池
后端我使用了 Express 框架。为了提高数据库查询性能,推荐使用 mysql2 的连接池。
const pool = mysql.createPool({
host: 'db',
user: 'root',
password: 'root123456',
database: 'tracker_db',
connectionLimit: 10
});
三、前后端对接核心逻辑
前端不再直接读取数据,而是通过 fetch API 向后端发起请求。例如登录验证:
前端发送 JSON 数据 { username, password } 给后端。后端在数据库校验通过后,返回一个 Token,前端将其存入缓存,后续所有请求都要带上这个 Token 才能操作数据。
轻量应用服务器域名解析与 HTTPS 证书配置指南
一、为什么需要 HTTPS?
如果你的网站还是 HTTP 协议,浏览器地址栏会显示一个巨大的“不安全”警告,客户绝对不敢填密码。而且,很多小程序和微信接口都强制要求 HTTPS。
二、申请免费 SSL 证书
在腾讯云控制台,搜索“SSL证书”,申请一张免费的 DV 单域名证书。审核非常快,几分钟就能下发。
三、Nginx 配置示例
下载证书后,将其传到服务器。如果你用 Nginx 做反向代理,配置如下:
server {
listen 443 ssl;
server_name 2157.com.cn;
ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/cert.key;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
配置完成后重启 Nginx,你的网站就穿上了“防弹衣”,左上角的绿锁就亮起来了。
粤公网安备44200102446529号