guzhi/.trae/documents/调整 Nginx 上传大小与超时以支持大文件.md
邹方成 f536178428 feat: 新增交易记录管理功能与统一上传接口
feat(交易记录): 新增交易记录管理页面与API接口
feat(上传): 添加统一上传接口支持自动识别文件类型
feat(用户管理): 为用户模型添加备注字段并更新相关接口
feat(邮件): 实现SMTP邮件发送功能并添加测试脚本
feat(短信): 增强短信服务配置灵活性与日志记录

fix(发票): 修复发票列表时间筛选功能
fix(nginx): 调整上传大小限制与超时配置

docs: 添加多个功能模块的说明文档
docs(估值): 补充估值计算流程与API提交数据说明

chore: 更新依赖与Docker镜像版本
2025-11-20 20:53:09 +08:00

2.3 KiB
Raw Blame History

目标

  • 提升 Nginx 代理下的上传体积与超时解决大文件上传被限制的问题413/超时)。

现状

  • 当前配置文件:deploy/web.conf 使用 location ^~ /api/ 反向代理到后端 http://127.0.0.1:9999,未设置上传大小和超时。

修改内容

  • server {} 块中增加统一的体积限制。
  • location ^~ /api/ 中增加长超时与关闭请求缓冲(提升大文件上传稳定性)。

具体改动(覆盖式替换关键片段)

  • server_name localhost; 后增加:
client_max_body_size 50m;
  • location ^~ /api/ { ... } 内追加:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_request_buffering off;

变更后的完整结构示例

server {
    listen 80;
    server_name localhost;
    client_max_body_size 50m;

    location = /docs {
        proxy_pass http://127.0.0.1:9999/docs;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    location = /redoc {
        proxy_pass http://127.0.0.1:9999/redoc;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    location = /openapi.json {
        proxy_pass http://127.0.0.1:9999/openapi.json;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    location / {
        root /opt/vue-fastapi-admin/web/dist;
        index index.html index.htm;
        try_files $uri /index.html;
    }
    location ^~ /api/ {
        proxy_pass http://127.0.0.1:9999;
        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_read_timeout 300s;
        proxy_send_timeout 300s;
        proxy_request_buffering off;
    }
}

发布与验证

  • 检查配置:nginx -t
  • 重新加载:nginx -s reload
  • 测试上传:使用 3040MB 文件调用 POST /api/v1/upload/file,确认不再出现 413 或上传超时;同时测试 POST /api/v1/upload/image 大图。

备注

  • 如需更大体积可将 client_max_body_size 调整为 100m 或更高;若上层云负载均衡也有限制,需要同步放宽。
  • 后续可在应用层增加最大体积限制与提示,避免无界上传占用过多资源。