【毕业设计】SpringBoot+Vue+MySQL 安康旅游网站平台源码+数据库+论文+部署文档
2026/1/16 18:18:56
这个问题通常是由于nginx配置与文件导出功能冲突导致的。以下是一些常见的排查和解决方案:
文件导出通常需要较长时间,检查以下配置:
# 在对应的 location 中增加超时设置 location /export { auth_request /auth; proxy_pass http://backend; # 增加超时时间(默认60秒可能不够) proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_read_timeout 600s; # 大文件传输相关设置 proxy_max_temp_file_size 0; proxy_buffering off; }location /export { auth_request /auth; # 禁用代理缓冲区,适合大文件下载 proxy_buffering off; proxy_request_buffering off; # 或者调整缓冲区大小 # proxy_buffer_size 128k; # proxy_buffers 4 256k; # proxy_busy_buffers_size 256k; proxy_pass http://backend; }location /export { auth_request /auth; # 取消客户端请求体大小限制 client_max_body_size 0; # 取消临时文件大小限制 proxy_max_temp_file_size 0; proxy_pass http://backend; }location /api/export { # 鉴权 auth_request /auth; auth_request_set $auth_status $upstream_status; # 代理设置 proxy_pass http://backend/api/export; 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_connect_timeout 600s; proxy_send_timeout 600s; proxy_read_timeout 600s; # 缓冲区设置 proxy_buffering off; proxy_request_buffering off; # 文件大小限制 client_max_body_size 0; proxy_max_temp_file_size 0; # 响应头设置(确保文件下载) proxy_set_header Accept-Encoding ""; proxy_hide_header Content-Disposition; proxy_hide_header Content-Type; }确保后端应用在鉴权通过后正确处理文件流:
# 查看错误日志tail-f /var/log/nginx/error.log# 查看访问日志tail-f /var/log/nginx/access.loglocation /export { # 注释掉鉴权行进行测试 # auth_request /auth; proxy_pass http://backend; # ... 其他配置 }# 测试鉴权curl-H"Authorization: Bearer token"http://nginx-server/export# 测试无鉴权curlhttp://nginx-server/export# 详细输出curl-v -H"Authorization: Bearer token"http://nginx-server/export# 减小缓冲区,避免内存消耗过大 location /export { proxy_buffer_size 4k; proxy_buffers 8 4k; proxy_busy_buffers_size 8k; }# 保持连接活跃 location /export { proxy_http_version 1.1; proxy_set_header Connection ""; }# 确保后端设置的响应头能正确传递 location /export { proxy_pass http://backend; # 传递Content-Disposition等下载相关头 proxy_pass_header Content-Disposition; proxy_pass_header Content-Type; proxy_pass_header Content-Length; # 或者传递所有头 # proxy_pass_header *; }#!/bin/bash# 检查nginx配置nginx -t# 查看当前连接状态netstat-anp|grepnginx# 检查系统资源top-b -n1|grep-E"(nginx|PID)"# 查看进程限制cat/proc/$(pgrep nginx|head-1)/limits|grep"Max open files"# 实时监控日志tail-f /var/log/nginx/*.log|grep-E"(export|timeout|error)"建议按以下顺序排查:
问题很可能出在超时时间不足或缓冲区设置不当上。