速卖通素材
奋斗

小型企业如何用一台Linux服务器兼顾小程序API服务和静态企业网站?

服务器

对于小型企业而言,用一台 Linux 服务器同时承载小程序 API 服务和静态企业网站,是性价比极高的方案。核心思路是利用 Nginx 作为反向X_X网关,根据域名或路径将流量智能分发到不同的后端服务。

以下是一套完整、可落地的实施方案:

1. 架构设计逻辑

我们将采用 Nginx + 应用容器/进程 的架构模式:

  • 静态资源层:由 Nginx 直接提供(速度快,节省 CPU)。
  • API 服务层:由 Node.js/Python/Go 等语言编写的后端程序运行,Nginx 负责转发请求。
  • 域名策略
    • www.yourdomain.com -> 指向静态网站目录。
    • api.yourdomain.com -> 转发至后端 API 服务端口。
    • (或者) yourdomain.com/api/* -> 转发至后端 API 服务端口(适合不想买两个域名的情况,但推荐分离域名以规范 CORS)。

2. 具体实施步骤

第一步:环境准备与基础安装

假设服务器已安装 Ubuntu/CentOS,我们需要安装必要的软件:

# 安装 Nginx (Web 服务器)
sudo apt update && sudo apt install nginx -y

# 安装 Node.js (假设你的后端是 Node.js,如果是 Python 请换 pip)
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install nodejs -y

# 安装 PM2 (用于管理后端进程,生产环境必备)
sudo npm install -g pm2

第二步:部署静态企业网站

将企业网站的 HTML/CSS/JS 文件上传到服务器的指定目录(例如 /var/www/html):

sudo mkdir -p /var/www/html
sudo cp -r ./dist/* /var/www/html/  # 假设你有一个构建好的 dist 目录
sudo chown -R www-data:www-data /var/www/html

第三步:部署小程序 API 服务

将后端代码上传并启动:

# 创建项目目录
sudo mkdir -p /opt/myapp
cd /opt/myapp
# ... 上传代码 ...

# 使用 PM2 启动服务 (监听 3000 端口)
pm2 start server.js --name api-service
pm2 save
pm2 startup

第四步:配置 Nginx (核心环节)

这是实现“兼顾”的关键。编辑 Nginx 配置文件(通常在 /etc/nginx/sites-available/default 或新建一个文件):

server {
    listen 80;
    server_name www.yourdomain.com yourdomain.com; # 静态网站域名

    root /var/www/html;
    index index.html;

    # 静态资源优化
    location / {
        try_files $uri $uri/ =404;

        # 可选:开启 gzip 压缩
        gzip on;
        gzip_types text/plain text/css application/json application/javascript;
    }
}

server {
    listen 80;
    server_name api.yourdomain.com; # API 专用子域名

    # 转发给本地运行的 API 服务
    location / {
        proxy_pass http://127.0.0.1:3000; # 对应 PM2 启动的端口

        # 关键配置:传递真实 IP 和 Host 头,防止后端获取不到用户信息
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # 处理 WebSocket (如果小程序有长连接需求)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # 建议添加超时设置,防止小程序请求过长被切断
    proxy_connect_timeout 60s;
    proxy_send_timeout 60s;
    proxy_read_timeout 60s;
}

注意:如果你只有单个域名且不想解析子域名,可以将第二个 server 块改为 location /api/ 的路径匹配模式,但为了安全和规范,强烈建议使用子域名

第五步:测试与生效

  1. 检查配置语法:
    sudo nginx -t
  2. 重载 Nginx:
    sudo systemctl reload nginx
  3. 重要:确保防火墙放行了 80 (HTTP) 和 443 (HTTPS) 端口。
    sudo ufw allow 'Nginx Full'
    sudo ufw enable

3. 关键优化与注意事项

A. 强制 HTTPS (必须做)

小程序强制要求接口必须是 HTTPS。你需要申请 SSL 证书并配置 Nginx。推荐使用 Certbot (Let’s Encrypt) 免费自动化管理:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d www.yourdomain.com -d api.yourdomain.com

Certbot 会自动修改 Nginx 配置并重载,后续证书过期也会自动续期。

B. 性能与安全加固

  1. CORS 跨域问题:虽然使用了子域名隔离,但前端(小程序)调用 api.xxx.com 时,后端代码仍需正确设置 Access-Control-Allow-Origin 头,或者在 Nginx 中统一配置:
    add_header Access-Control-Allow-Origin *; # 生产环境建议指定具体域名
  2. 数据库连接:如果数据库也在同一台机器上,确保只允许 localhost 连接,不要开放数据库端口到公网,防止被暴力破解。
  3. 进程守护:务必使用 PM2Systemd 管理后端服务,一旦服务崩溃能自动重启。

C. 监控与维护

  • 日志分析:查看 Nginx 访问日志 (/var/log/nginx/access.log) 监控流量和错误。
  • 资源监控:安装 htopnmon 实时观察 CPU 和内存占用。
  • 备份:编写简单的 Shell 脚本,每天自动备份数据库和代码目录到云存储(如 AWS S3 或阿里云 OSS)。

总结

通过 Nginx 反向X_X 将流量按域名拆分,配合 PM2 管理后端进程,你可以在一台低成本服务器上完美实现“静态网站展示 + 小程序高并发 API 支持”。这种方案不仅节省了服务器成本,还简化了运维复杂度,非常适合小型企业起步阶段。

未经允许不得转载:轻量云Cloud » 小型企业如何用一台Linux服务器兼顾小程序API服务和静态企业网站?