欢迎来到徐庆高(Tea)的个人博客网站
磨难很爱我,一度将我连根拔起。从惊慌失措到心力交瘁,我孤身一人,但并不孤独无依。依赖那些依赖我的人,信任那些信任我的人,帮助那些给予我帮助的人。如果我愿意,可以分裂成无数面镜子,让他们看见我,就像看见自己。察言观色和模仿学习是我的领域。像每个深受创伤的人那样,最终,我学会了随遇而安。
当前位置: 日志文章 > 详细内容

nginx文件上传限制以及超时无响应问题的解决

2025年04月01日 MsSqlserver
一、背景笔者最近开发前后端分离项目遇到一些问题,后端服务是基于80/443端口反向代理的,所以请求会经过nginx网关,然后将请求代理到后端服务,这是开发环境。二、问题文件上传大小有限制上传传时间过长

一、背景

笔者最近开发前后端分离项目遇到一些问题,后端服务是基于80/443端口反向代理的,所以请求会经过nginx网关,然后将请求代理到后端服务,这是开发环境。

二、问题

  • 文件上传大小有限制
  • 上传传时间过长无响应

二、解决方案

http {
    ...

    # 性能优化
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    # 客户端请求配置
    client_max_body_size 1000m;   # 解决文件上传大小限制
    client_body_buffer_size 2m; 
    client_header_buffer_size 256k;
    large_client_header_buffers 4 256k;

    # 超时设置            
    client_body_timeout 600s;
    client_header_timeout 600s;
    keepalive_timeout 120s;
    keepalive_requests 1000;

    # 反向代理配置
    proxy_connect_timeout 600s;
    proxy_send_timeout 600s;
    proxy_read_timeout 600s;
}

经过以上客户端请求配置和超时配置后按理说就解决了上面两个问题了,可是当我再进行测试的时候,接口依旧1分钟请求超时。

最后我想了一圈也没想到竟然是axios请求超时配置是60000ms,也就是1分钟,此时此刻豁然开朗了。

const service = axios.create({
	baseurl: '/api', // api base_url
	timeout: 300000 // 请求超时时间, 配置为5分钟
})

再进行测试

ok,也是上传成功了,没想到用时2.6分钟。

四、总结

配置nginx文件限制不仅仅在nginx中配置,后端服务也要配置,因为有好几层网关,例如springboot的配置:

# multipart configuration
spring.servlet.multipart.max-request-size=100mb
spring.servlet.multipart.max-file-size=100mb

还有就是请求超时配置,例如axios的请求超时时间:

const service = axios.create({
	baseurl: '/api', // api base_url
	timeout: 300000 // 请求超时时间, 配置为5分钟
})

最后还有nginx配置:

http {
    ...

    # 性能优化
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    # 客户端请求配置
    client_max_body_size 100m;   # 解决文件上传大小限制
    client_body_buffer_size 2m; 
    client_header_buffer_size 256k;
    large_client_header_buffers 4 256k;

    # 超时设置            
    client_body_timeout 600s;
    client_header_timeout 600s;
    keepalive_timeout 120s;
    keepalive_requests 1000;

    # 反向代理配置
    proxy_connect_timeout 600s;
    proxy_send_timeout 600s;
    proxy_read_timeout 600s;
}

这三板斧下来就能够解决大部分文件上传问题了。

到此这篇关于nginx文件上传限制以及超时无响应问题的解决的文章就介绍到这了,更多相关nginx文件上传限制及超时无响应内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!