小型企业用一台 Linux 服务器(如 2核4G、100GB SSD 的云服务器)同时承载 小程序后端 API 服务 和 静态企业官网,完全可行且推荐——关键在于合理架构、安全隔离与资源优化。以下是经过生产验证的轻量级、高性价比方案:
✅ 核心原则
- 动静分离:API(动态)与官网(静态)物理/逻辑分离,互不干扰
- 单机多服务共存:通过反向X_X统一入口,避免端口暴露
- 零运维负担:全自动化部署 + 健康监控,适合无专职运维团队
- 安全第一:HTTPS 强制、最小权限、自动更新
🌐 推荐架构(Nginx + Docker + Let’s Encrypt)
公网 443/80 → Nginx(反向X_X & SSL 终结)
├─ /api/* → 转发到 http://localhost:3000(Node.js/Python API)
├─ / → 指向 /var/www/company-website/(静态官网)
└─ /admin → 可选:保护后台路径(Basic Auth 或 IP 白名单)
✅ 优势:Nginx 高性能处理静态文件 + TLS 卸载,API 服务专注业务逻辑,互不影响。
🛠️ 分步实施指南(以 Ubuntu 22.04 为例)
1️⃣ 基础环境准备(5分钟)
# 更新系统 + 安装必要工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y nginx curl git docker.io docker-compose
# 启用并启动 Docker
sudo systemctl enable docker && sudo systemctl start docker
sudo usermod -aG docker $USER # 当前用户加入 docker 组(登出重进生效)
2️⃣ 静态官网部署(极简)
# 创建网站目录
sudo mkdir -p /var/www/company-website
sudo chown -R $USER:$USER /var/www/company-website
# 将你的 HTML/CSS/JS 文件上传至此(如用 git clone 或 sftp)
# 示例:git clone https://github.com/your-org/website.git /var/www/company-website
# 确保权限正确
sudo chmod -R 755 /var/www/company-website
3️⃣ API 服务容器化(推荐 Docker)
假设你的小程序后端是 Node.js(Express)或 Python(FastAPI/Flask):
✅ *示例:Node.js API(`/api/`)**
# Dockerfile (项目根目录)
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
# 构建并运行(后台守护)
docker build -t company-api .
docker run -d
--name api-service
-p 127.0.0.1:3000:3000
--restart=unless-stopped
-v /path/to/api/logs:/app/logs
company-api
💡 提示:用
docker-compose.yml更易管理(见下方附录)
4️⃣ Nginx 配置(核心!统一入口)
sudo nano /etc/nginx/sites-available/company.conf
server {
listen 80;
server_name your-domain.com www.your-domain.com;
return 301 https://$server_name$request_uri; # HTTP → HTTPS 强制跳转
}
server {
listen 443 ssl http2;
server_name your-domain.com www.your-domain.com;
# SSL(Let's Encrypt 自动配置,见下一步)
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
# 静态官网(根路径)
location / {
root /var/www/company-website;
try_files $uri $uri/ /index.html; # 支持 Vue/React 路由
index index.html;
expires 1h;
add_header Cache-Control "public, immutable";
}
# API 接口(转发到本地容器)
location /api/ {
proxy_pass http://127.0.0.1:3000/;
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 可选:屏蔽敏感路径
location ~ ^/(.git|node_modules|package.json) {
deny all;
}
}
启用配置:
sudo ln -sf /etc/nginx/sites-available/company.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
5️⃣ 免费 HTTPS(Certbot 自动续期)
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
# ✅ 自动配置 SSL 并添加 cron 续期任务(无需手动干预)
6️⃣ 安全加固(必做!)
- 🔒 关闭 SSH 密码登录,改用密钥认证
- 🚫 禁用 root 远程登录
- 🛑 安装
fail2ban防暴力破解 - 📦 使用
ufw仅开放 80/443/22(限制 SSH 源 IP) - 🧹 定期
apt update && apt upgrade -y(可设为自动)
sudo ufw allow OpenSSH # 或指定 IP:sudo ufw allow from 203.0.113.42 to any port 22
sudo ufw allow 'Nginx Full'
sudo ufw enable
📈 性能与扩展建议(小企业友好)
| 场景 | 方案 | 成本 |
|---|---|---|
| 流量增长(日 UV > 1万) | Nginx 开启 gzip_static on; + 静态资源加 CDN(Cloudflare 免费版) |
¥0 |
| API 压力大 | 在同一台机器上用 PM2 管理多个 Node 实例(CPU 绑定),或升级到 4核8G | ¥100/月起(云服务器) |
| 需要数据库 | Docker 运行 PostgreSQL/MySQL(数据卷持久化),禁止网络访问,仅 API 容器连接 | ✅ 安全又轻量 |
| 自动部署 | GitHub Webhook + 简单 Bash 脚本(推送即更新官网/API) | ✅ 10行代码搞定 |
📄 附录:一键式 docker-compose.yml(API + DB 示例)
# docker-compose.yml
version: '3.8'
services:
api:
build: ./api
restart: unless-stopped
ports:
- "127.0.0.1:3000:3000"
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/company
depends_on: [db]
db:
image: postgres:15-alpine
restart: unless-stopped
environment:
POSTGRES_DB: company
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user -d company"]
interval: 30s
timeout: 10s
retries: 5
volumes:
pgdata:
✅ 最终效果
- 访问
https://your-domain.com→ 企业官网(秒开,CDN 提速后更佳) - 小程序调用
https://your-domain.com/api/login→ 后端 API(Nginx 透传,支持 CORS) - 所有流量 HTTPS 加密,证书自动续期
- 故障隔离:官网挂了不影响 API,反之亦然
- 运维成本 ≈ 每月 10 分钟检查日志 +
docker logs api
需要我为你:
- ✍️ 生成完整
docker-compose.yml(适配 Python/FastAPI 或 PHP/Laravel)? - 📥 提供官网部署脚本(自动拉取 GitHub 页面 + 重启 Nginx)?
- 🛡️ 输出 fail2ban + UFW 安全配置模板?
- 📊 推荐适合小程序的轻量 API 框架(如 Gin/Express/FastAPI)对比?
欢迎随时告诉我你的技术栈(Node/Python/PHP/Java?),我可定制化交付全部配置文件 👇
云服务器