对于小型企业而言,用一台 Linux 服务器同时承载小程序 API(后端)和静态网站(前端/展示页),核心思路是:利用 Nginx 作为反向X_X,通过不同的 URL 路径或域名区分流量,实现动静分离但共享同一台服务器资源。
以下是详细、可落地的实施方案:
✅ 总体架构
用户请求 → Nginx (端口 80/443)
├── /api/* → 转发到后端应用(如 Node.js/Python/Go/Java 等)
└── /* → 提供静态文件(HTML/CSS/JS/图片等)
关键原则:Nginx 根据 URL 路径判断请求类型,动态请求交给后端服务,静态请求直接由 Nginx 返回。
🛠️ 实施步骤
1. 准备环境
-
操作系统:Ubuntu 20.04/22.04 或 CentOS 7/8
-
安装 Nginx:
sudo apt update && sudo apt install nginx -y # Ubuntu # 或 sudo yum install epel-release && sudo yum install nginx -y # CentOS -
安装后端运行时(以 Node.js + Express 为例):
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install nodejs -y -
编写一个简单的 API 服务(
app.js):const express = require('express'); const app = express(); app.listen(3000, () => console.log('API running on port 3000')); app.get('/api/hello', (req, res) => { res.json({ message: 'Hello from Mini Program API!' }); }); -
启动 API 服务(建议使用 PM2 管理进程):
npm install pm2 -g pm2 start app.js --name api-server
2. 配置 Nginx 反向X_X
编辑 Nginx 配置文件(通常位于 /etc/nginx/sites-available/default 或自定义站点配置):
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
# 静态网站根目录
root /var/www/html;
index index.html;
# 小程序 API 请求X_X到后端服务
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;
}
# 其他所有请求视为静态文件
location / {
try_files $uri $uri/ =404;
}
# 可选:启用 HTTPS(推荐)
# listen 443 ssl;
# ssl_certificate /path/to/cert.pem;
# ssl_certificate_key /path/to/key.pem;
}
💡 注意:小程序要求后端必须使用 HTTPS,因此务必配置 SSL 证书(可使用 Let’s Encrypt 免费证书)。
3. 部署静态网站
将你的企业官网文件放入 /var/www/html 目录:
sudo mkdir -p /var/www/html
sudo chown -R $USER:$USER /var/www/html
# 上传你的 HTML/CSS/JS 文件到此目录
测试静态页面是否正常访问:
http://yourdomain.com/
4. 配置 HTTPS(Let’s Encrypt 示例)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Certbot 会自动修改 Nginx 配置并启用 HTTPS,重启 Nginx:
sudo systemctl restart nginx
5. 安全与优化建议
| 项目 | 建议 |
|---|---|
| 防火墙 | 仅开放 80/443 端口,关闭 SSH 公网暴露或使用密钥登录 |
| PM2 开机自启 | pm2 startup + pm2 save |
| 日志监控 | 查看 /var/log/nginx/access.log 和 pm2 logs |
| 备份 | 定期备份数据库、代码和静态文件 |
| 性能 | 启用 Gzip 压缩、缓存静态资源(Nginx 默认已优化) |
| 权限 | Nginx 运行用户 www-data 不应有写权限,防止篡改 |
📌 小程序接入注意事项
- 服务器域名必须备案(中国内地地区)
- 必须使用 HTTPS,且证书需受信任
- CORS 问题:如果前端和 API 同域(通过 Nginx X_X),一般无需处理 CORS;若分域名,需在 API 层设置
Access-Control-Allow-Origin - 微信后台配置:在微信公众平台设置“服务器域名”为
https://yourdomain.com
🔄 替代方案对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| Nginx 反向X_X(推荐) | 简单、高效、易维护 | 需手动配置 |
| Docker 容器化 | 隔离性好、易扩展 | 学习成本高 |
| 云服务器一键部署套件(如宝塔面板) | 图形化操作、适合新手 | 资源占用略高 |
对于技术能力有限的小型企业团队,宝塔面板 是一个极佳选择,它内置了 Nginx 配置、SSL 证书申请、PM2 管理等可视化功能,极大降低运维难度。
✅ 总结 checklist
- [ ] 安装 Nginx 和后端运行时
- [ ] 编写并启动 API 服务(监听 localhost 端口)
- [ ] 配置 Nginx 反向X_X
/api/*到后端 - [ ] 部署静态网站到 Nginx 根目录
- [ ] 配置 HTTPS 证书
- [ ] 测试小程序 API 调用和静态页面访问
- [ ] 设置自动重启、日志监控、备份机制
这样,你就用一台 Linux 服务器成功兼顾了小程序 API 和企业官网,成本低、效率高、易于维护。
云知识CLOUD