在单服务器环境下配置前后端共存,是一种常见的部署方式。通常前端是静态资源(如 HTML、CSS、JS),后端提供 API 接口(如 Node.js、Python Flask/Django、Java Spring 等)。以下是几种常见且高效的配置方案:
✅ 方案一:使用 Nginx 反向X_X(推荐)
这是最主流、最灵活的方式。Nginx 作为反向X_X服务器,统一处理请求,根据路径将请求分发给前端或后端。
📁 目录结构示例:
/var/www/
├── frontend/ # 前端打包文件(如 dist)
│ ├── index.html
│ ├── static/
├── backend/ # 后端项目代码
🛠️ Nginx 配置(/etc/nginx/sites-available/default 或自定义站点):
server {
listen 80;
server_name your-domain.com; # 或服务器 IP
# 前端静态资源
location / {
root /var/www/frontend;
try_files $uri $uri/ /index.html; # 支持 SPA 路由(如 Vue/React)
}
# 后端 API 请求转发
location /api/ {
proxy_pass http://127.0.0.1:3000/; # 假设后端运行在 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;
}
# 可选:WebSocket 支持
location /ws/ {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
🔧 后端服务启动(例如 Node.js):
node server.js # 监听 3000 端口
注意:确保后端只监听
127.0.0.1或内网地址,避免直接暴露。
✅ 优点:
- 前后端共享一个域名和端口(80/443)
- 易于配置 HTTPS(通过 Let’s Encrypt)
- 支持负载均衡、缓存、压缩等高级功能
✅ 方案二:后端服务内置静态文件(适用于轻量级应用)
如果你的后端框架支持(如 Express、Flask、Spring Boot),可以直接让后端托管前端静态资源。
示例(Node.js + Express):
const express = require('express');
const path = require('path');
const app = express();
// 托管前端静态文件
app.use(express.static(path.join(__dirname, 'frontend/dist')));
// API 路由
app.get('/api/data', (req, res) => {
res.json({ message: 'Hello from backend!' });
});
// SPA 路由回退
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'frontend/dist/index.html'));
});
app.listen(3000);
✅ 优点:
- 部署简单,无需额外 Web 服务器
- 适合小型项目或原型开发
❌ 缺点:
- 不利于性能优化(如缓存、Gzip)
- 后端承担了本可由 Nginx 处理的任务
✅ 方案三:使用 PM2 + Nginx(生产推荐)
结合进程管理工具(PM2)和 Nginx 实现高可用部署。
步骤:
-
使用 PM2 启动后端服务:
pm2 start server.js --name "backend" -
Nginx 配置同方案一,反向X_X到
localhost:3000 -
自动启动:
pm2 startup pm2 save
✅ HTTPS 配置(Let’s Encrypt)
使用 Certbot 为你的域名添加免费 SSL 证书:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
之后 Nginx 会自动配置 HTTPS 并重定向 HTTP → HTTPS。
🔐 安全建议
- 前端不包含敏感信息(API 密钥等应放在后端)
- 后端启用 CORS 白名单
- 使用防火墙限制非必要端口(如只开放 80、443)
- 定期更新系统和软件
🧩 总结:推荐架构
| 组件 | 说明 |
|---|---|
| Nginx | 入口网关,处理静态资源 + 反向X_X |
| 前端 | 打包后放在 Nginx root 目录 |
| 后端 | 运行在本地端口(如 3000),由 Nginx X_X访问 |
| PM2 | (可选)用于守护后端进程 |
| HTTPS | 使用 Let’s Encrypt 免费证书 |
如有具体技术栈(如 Vue + Spring Boot / React + Express),我可以提供更详细的配置模板。欢迎补充!
云小栈