编程 Nginx 上传和超时时间限制(包括 PHP 上传限制)

2024-11-18 20:37:17 +0800 CST views 927

在服务器上部署了一套使用 Nginx 反向代理 Tomcat 的后台环境,当上传一个 70M 的视频文件时,上传过程在中途失败。原因是 Nginx 配置中限制了上传文件的大小。

解决方案

1. Nginx 上传文件大小限制

在 Nginx 配置文件中,client_max_body_size 参数用于限制上传文件的大小。该参数可以在 httpserverlocation 区块中配置。

示例配置:

http {
    client_max_body_size 100M;  # 限制文件上传大小为 100M
}

2. Tomcat 超时时间配置

在 Tomcat 的 server.xml 配置文件中,connectionTimeout 参数用于设置请求的超时时间,默认值为 20000 毫秒(20 秒),可以适当调大,例如改为 60000 毫秒(60 秒)。

示例配置:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="60000"
           redirectPort="8443" />

3. Nginx 代理请求超时时间

Nginx 中可以通过以下配置调整代理请求的超时时间:

  • proxy_connect_timeout:与后端服务器建立连接的超时时间。
  • proxy_read_timeout:从后端服务器读取响应的超时时间。
  • proxy_send_timeout:向后端服务器发送请求的超时时间。

参考配置:

location / {
    proxy_connect_timeout 60s;
    proxy_read_timeout 60s;
    proxy_send_timeout 60s;
    ...
}

详细配置说明可参考 Nginx 官方文档

4. Nginx keepalive_timeout 配置

keepalive_timeout 是 Nginx 中的 HTTP 连接超时设置,用于指定客户端与服务器之间的连接在设定时间内保持有效。

**注意:**该参数不宜设置过大,否则可能导致连接数过多,占用大量无效资源,甚至导致 Nginx 崩溃。例如,超大的 keepalive_timeout 设置可能会在连接数达到 worker_connections 限制时触发错误 socket() failed (24: Too many open files) while connecting to upstream

合理的 keepalive_timeout 配置示例:

http {
    keepalive_timeout 15s;  # 设置为 15 秒
}

5. PHP 上传大小限制

在 PHP 的 php.ini 配置文件中,有多个参数影响上传文件的大小:

; 设置脚本允许的最大内存分配
memory_limit = 32M

; 设置上传文件的最大大小
upload_max_filesize = 8M

; 设置允许的 POST 数据最大值,必须大于 upload_max_filesize
post_max_size = 16M

总结

  • Nginx 的 client_max_body_size 用于限制上传文件的大小。
  • Tomcat 的 connectionTimeout 可以适当调大以防止超时。
  • Nginx 的 keepalive_timeout 参数应合理设置,避免资源无效占用。
  • PHP 的 upload_max_filesizepost_max_size 参数需要配置以支持更大的上传文件。

合理配置这些参数后,可以解决上传文件大小和请求超时的问题,确保系统稳定运行。

复制全文 生成海报 服务器 反向代理 配置

推荐文章

一键配置本地yum源
2024-11-18 14:45:15 +0800 CST
Python实现Zip文件的暴力破解
2024-11-19 03:48:35 +0800 CST
前端开发中常用的设计模式
2024-11-19 07:38:07 +0800 CST
Vue3中的Store模式有哪些改进?
2024-11-18 11:47:53 +0800 CST
在 Docker 中部署 Vue 开发环境
2024-11-18 15:04:41 +0800 CST
Flet 构建跨平台应用的 Python 框架
2025-03-21 08:40:53 +0800 CST
Vue3中的组件通信方式有哪些?
2024-11-17 04:17:57 +0800 CST
js迭代器
2024-11-19 07:49:47 +0800 CST
前端如何给页面添加水印
2024-11-19 07:12:56 +0800 CST
Go中使用依赖注入的实用技巧
2024-11-19 00:24:20 +0800 CST
jQuery中向DOM添加元素的多种方法
2024-11-18 23:19:46 +0800 CST
Go 开发中的热加载指南
2024-11-18 23:01:27 +0800 CST
html折叠登陆表单
2024-11-18 19:51:14 +0800 CST
paint-board:趣味性艺术画板
2024-11-19 07:43:41 +0800 CST
在Vue3中实现代码分割和懒加载
2024-11-17 06:18:00 +0800 CST
一个数字时钟的HTML
2024-11-19 07:46:53 +0800 CST
ElasticSearch简介与安装指南
2024-11-19 02:17:38 +0800 CST
全新 Nginx 在线管理平台
2024-11-19 04:18:33 +0800 CST
跟着 IP 地址,我能找到你家不?
2024-11-18 12:12:54 +0800 CST
程序员茄子在线接单