全栈部署实战指南:前后端分离架构部署与Nginx高阶配置

一、前端部署全流程解析

  1. 项目构建与优化
    以主流框架Vue为例,执行构建命令npm run build生成dist目录。建议配置publicPath参数解决多级路径资源加载问题,通过webpack-bundle-analyzer分析打包体积,启用Gzip压缩减少传输数据量。对于大型项目,可采用路由懒加载和代码分割技术优化首屏加载速度。

  2. 安全传输方案
    推荐使用SCP协议传输文件:

    1. scp -r -P 2222 -i ~/.ssh/key.pem dist/* user@server:/var/www/html

    关键参数说明:

  • -P指定非标准SSH端口
  • -i指定密钥文件路径
  • 生产环境建议禁用SCP的密码认证,改用密钥对认证
  1. Nginx静态托管配置
    核心配置示例:

    1. server {
    2. listen 80;
    3. server_name example.com;
    4. root /var/www/html;
    5. index index.html;
    6. # 前端路由支持
    7. location / {
    8. try_files $uri $uri/ /index.html;
    9. }
    10. # 静态资源缓存策略
    11. location ~* \.(js|css|png|jpg)$ {
    12. expires 1y;
    13. add_header Cache-Control "public, no-transform";
    14. }
    15. # 禁止访问敏感文件
    16. location ~ /(\.env|\.git|README\.md) {
    17. deny all;
    18. return 403;
    19. }
    20. }

二、后端服务部署方案

  1. Node.js进程管理
    推荐使用PM2进行进程守护:
    ```bash

    安装与启动

    npm install -g pm2
    pm2 start app.js —name “api-server” -i 4 —max-memory-restart 500M

开机自启配置

pm2 startup
pm2 save

  1. 关键参数说明:
  2. - `-i`指定集群模式实例数
  3. - `--max-memory-restart`设置内存限制自动重启
  4. - 建议配合日志轮转工具`logrotate`管理日志文件
  5. 2. Java服务部署方案
  6. 生产环境推荐使用systemd管理:
  7. ```ini
  8. # /etc/systemd/system/app.service
  9. [Unit]
  10. Description=Java Application
  11. After=syslog.target network.target
  12. [Service]
  13. User=appuser
  14. WorkingDirectory=/opt/app
  15. ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar app.jar
  16. SuccessExitStatus=143
  17. Restart=always
  18. [Install]
  19. WantedBy=multi-user.target

配置完成后执行:

  1. systemctl daemon-reload
  2. systemctl enable app
  3. systemctl start app

三、Nginx反向代理深度配置

  1. API网关配置

    1. location /api/ {
    2. proxy_pass http://127.0.0.1:3000;
    3. proxy_set_header Host $host;
    4. proxy_set_header X-Real-IP $remote_addr;
    5. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    6. # WebSocket支持
    7. proxy_http_version 1.1;
    8. proxy_set_header Upgrade $http_upgrade;
    9. proxy_set_header Connection "upgrade";
    10. # 超时设置
    11. proxy_connect_timeout 60s;
    12. proxy_read_timeout 300s;
    13. proxy_send_timeout 300s;
    14. }
  2. 跨域解决方案
    完整CORS配置示例:

    1. location /api/ {
    2. if ($request_method = 'OPTIONS') {
    3. add_header 'Access-Control-Allow-Origin' '*';
    4. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    5. add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';
    6. add_header 'Access-Control-Max-Age' 1728000;
    7. add_header 'Content-Type' 'text/plain; charset=utf-8';
    8. add_header 'Content-Length' 0;
    9. return 204;
    10. }
    11. add_header 'Access-Control-Allow-Origin' '*';
    12. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    13. add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';
    14. proxy_pass http://backend;
    15. }

四、CDN加速集成方案

  1. 边缘节点配置
    主流CDN服务商配置要点:
  • 源站设置:填写服务器IP或域名
  • 回源协议:根据安全需求选择HTTP/HTTPS
  • 缓存规则:
    • HTML文件缓存10分钟
    • 静态资源缓存1年(配置Cache-Control: public, max-age=31536000)
    • API响应禁用缓存
  1. HTTPS加速优化
    推荐配置:
  • 启用HTTP/2协议
  • 开启OCSP Stapling加速证书验证
  • 配置TLS 1.2及以上版本
  • 启用会话复用(Session Tickets)

五、安全防护体系构建

  1. 基础防护配置
    ```nginx

    限制请求速率

    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    server {
    location /api/ {

    1. limit_req zone=one burst=5 nodelay;

    }
    }

防SQL注入

location ~* (union|select|insert|delete|update|count|(|)|drop|truncate|declare) {
deny all;
}

  1. 2. WAF集成方案
  2. 推荐部署流程:
  3. 1. 安装ModSecurity模块
  4. 2. 加载OWASP核心规则集
  5. 3. 配置异常评分阈值
  6. 4. 设置白名单规则
  7. 六、监控与运维体系
  8. 1. 日志分析方案
  9. 配置日志轮转:

/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 cat /var/run/nginx.pid
endscript
}
```

  1. 性能监控指标
    关键监控项:
  • 连接数:active connections
  • 请求速率:requests per second
  • 响应时间分布:p50/p90/p99
  • 错误率:5xx error rate
  • 上游响应时间:upstream response time

结语:
本方案通过系统化的配置管理,实现了从代码构建到全球分发的完整技术栈覆盖。实际部署时建议先在测试环境验证所有配置,特别是安全相关规则。对于高并发场景,可结合负载均衡器和容器编排技术构建弹性架构,建议定期进行安全审计和性能调优,确保系统长期稳定运行。