欢迎大家加入笔记的建设,共同丰富和完善内容!
本人专科应届毕业生,寻求工作中,求介绍~
# 最大上传文件大小(根据需求调整,示例500M)
client_max_body_size 500M;
# 超时时间统一设为3600秒(1小时,避免大文件上传超时)
client_header_timeout 3600s;
client_body_timeout 3600s;
fastcgi_connect_timeout 3600s;
fastcgi_send_timeout 3600s;
fastcgi_read_timeout 3600s;
# 进阶优化(nginx + php-fpm):使用共享内存做临时存贮提高上传速度(需确保/dev/shm空间充足),共享内存需要大一些,否则上传大文件内存不足
client_body_in_file_only clean;
client_body_temp_path /dev/shm 1 2;
fastcgi_param REQUEST_BODY_FILE $request_body_file;
service nginx reload
(重启Nginx)LimitRequestBody
参数,重启Apache生效。# 最大提交大小(需 ≥ 上传文件大小)
post_max_size = 500M;
# 单文件最大上传大小
upload_max_filesize = 500M;
# PHP运行内存限制
memory_limit = 500M;
# 脚本最大运行时间单位秒,文件过大可能上传会超时
max_execution_time = 3600;
max_input_time = 3600;
# php中设置set_time_limit无效(safe_mode=on时php代码中修改超时无效) php.ini
# 关闭安全模式(否则代码中修改超时无效)
safe_mode = off
# 超时时间(与Nginx保持一致)
request_terminate_timeout 3600;
# 子进程配置(平衡性能与内存占用)
pm.max_children = 50; # 最大子进程数
pm.start_servers = 10; # 启动时子进程数
pm.min_spare_servers = 10; # 最小空闲子进程数
pm.max_spare_servers = 30; # 最大空闲子进程数
pm.max_requests = 500; # 子进程处理请求上限(避免内存泄漏)
exe,bat,sh,dll,php,asp,jsp
等可执行后缀(安全必需,无需修改,新增用半角逗号分隔)。php.ini
中post_max_size
和upload_max_filesize
的值,且不能设为0(否则无法上传)。post_max_size
和upload_max_filesize
的大小,分块太大或太小都会影响上传的性能,请根据服务器设置来调整此参数,否则会引起上传异常(上传失败,进度回退)。配置项 | 作用说明 | 为什么要设 500M/3600s? | 注意事项 |
---|---|---|---|
post_max_size = 500M | 限制 整个 HTTP 请求体的最大体积(含 POST 表单数据+上传文件) | 若要传 500M 的文件,需确保请求体总大小足够(不能小于 upload_max_filesize ) | 必须 ≥ upload_max_filesize (否则上传文件会因“请求体超限额”失败) |
upload_max_filesize = 500M | 限制 单个上传文件的最大体积 | 教程目标是支持“大文件上传”(如 500M 的压缩包/视频),默认值通常仅 2M,完全不够 | 若实际只需传 100M 文件,可设为 100M(无需盲目设大,避免资源浪费) |
memory_limit = 500M | 限制 单个 PHP 脚本可使用的最大内存 | 处理大文件(如读取/验证文件内容)时,需足够内存避免“内存溢出” | 不宜过大(如 4G 内存服务器设 1G 即可),否则多并发时会耗尽服务器内存 |
max_execution_time = 3600 | 限制 PHP 脚本 实际执行的最大时间(如文件分片合并、数据处理) | 传大文件时,脚本执行(如合并分片)可能超过默认 30 秒,设 1 小时足够缓冲 | 需与 Nginx 的 fastcgi_read_timeout 保持一致(避免 Nginx 先超时) |
max_input_time = 3600 | 限制 PHP 接收请求数据的最大时间(如接收大文件的字节流) | 网速慢时,传 500M 文件可能超过默认 60 秒,设 1 小时避免“数据接收中断” | 需与 Nginx 的 client_body_timeout 保持一致(避免 Nginx 先断开连接) |
safe_mode = off | 关闭 PHP 的“安全模式”(安全模式下,脚本无法修改超时时间、访问外部文件等) | 若开启(on ),即使代码里用 set_time_limit() 改超时也无效,会影响灵活调优 | 现代 PHP 已废弃 safe_mode (PHP 5.4+ 移除),若你的 PHP 版本较新,可忽略此配置 |
配置项 | 作用说明 | 为什么要这样设(4G 内存服务器)? | 注意事项 |
---|---|---|---|
request_terminate_timeout = 3600 | 限制 单个 PHP-FPM 进程处理请求的最大时间(兜底超时) | 避免某个“卡死的脚本”长期占用进程(如无限循环),与 PHP 超时形成双重保障 | 必须 ≥ max_execution_time (否则 PHP 还在执行,FPM 就强制杀死进程) |
pm.max_children = 50 | 限制 PHP-FPM 最大可启动的进程数(每个进程处理一个用户请求) | 4G 内存服务器:每个进程约占 50-80M 内存,50 个进程约占 2.5-4G,刚好匹配 | 按服务器内存计算:若 2G 内存,建议设为 20-30(避免 进程过多导致内存不足) |
pm.start_servers = 10 | PHP-FPM 启动时 初始创建的进程数 | 减少“用户请求来了再创建进程”的延迟,10 个初始进程足够应对低并发启动场景 | 通常设为 (min_spare_servers + max_spare_servers) / 2 ,保持均衡 |
pm.min_spare_servers = 10 | 空闲时 最少保留的进程数(避免频繁创建/销毁进程) | 确保低峰期有足够进程待命,减少请求等待时间 | 不能小于 5(否则低并发时也会频繁创建进程,消耗资源) |
pm.max_spare_servers = 30 | 空闲时 最多保留的进程数(避免空闲进程占用过多内存) | 30 个空闲进程既能应对突发请求,又不会浪费内存(4G 内存可承受) | 必须 ≥ min_spare_servers ,且 ≤ max_children |
pm.max_requests = 500 | 单个 PHP-FPM 进程 处理多少请求后自动重启 | 避免进程长期运行导致“内存泄漏”(如脚本累积占用内存不释放) | 设为 500-1000 即可(重启太频繁会增加开销,太少会漏内存泄漏) |
配置项 | 作用说明 | 为什么要设 500M/3600s? | 注意事项 |
---|---|---|---|
client_max_body_size 500M | 限制 Nginx 接收的 请求体最大体积(与 PHP 的 post_max_size 对应) | 若 Nginx 设小了(如默认 1M),即使 PHP 设 500M,Nginx 也会直接拦截请求 | 必须与 post_max_size 保持一致(或略大),避免“网关层先拦截” |
client_header_timeout 3600s | 限制 Nginx 读取请求头的最大时间(如 Cookie、User-Agent 等) | 避免“恶意请求只发部分头”占用连接,设 1 小时足够安全(默认 60s 也可,但教程求稳) | 通常无需改,教程设 3600s 是为了“全链路超时统一”,避免特殊场景出问题 |
client_body_timeout 3600s | 限制 Nginx 读取请求体的最大时间(与 PHP 的 max_input_time 对应) | 网速慢时,Nginx 接收大文件可能超时,需与 PHP 接收时间同步 | 必须 ≥ max_input_time (否则 Nginx 先断开,PHP 还在等数据) |
fastcgi_connect_timeout 3600s | 限制 Nginx 与 PHP-FPM 建立连接的最大时间 | 避免“PHP-FPM 繁忙时,Nginx 连不上就报错”,设 1 小时足够缓冲 | 默认 60s 可能不够(高并发时 FPM 进程忙),设大些更稳定 |
fastcgi_send_timeout 3600s | 限制 Nginx 向 PHP-FPM 发送 请求数据的最大时间 | 大请求数据(如分片文件)发送需时间,避免中途断开 | 通常与其他超时保持一致即可,无需单独调整 |
fastcgi_read_timeout 3600s | 限制 Nginx 从 PHP-FPM 读取响应的最大时间(与 max_execution_time 对应) | PHP 执行耗时任务(如合并分片)时,Nginx 需等待足够久,避免先返回 504 错误 | 必须 ≥ max_execution_time (核心配合项,否则会频繁出现 504 网关超时) |
post_max_size
/upload_max_filesize
/client_max_body_size
都设为 100M(无需设 500M,减少恶意大文件攻击风险) 。max_input_time
/client_body_timeout
设为 60 秒(留 5 倍缓冲即可,无需设 3600 秒)。pm.max_children
设为 20-30,memory_limit
设为 256M(避免进程过多耗尽内存)。
data/attachment/
的权限设为 755,文件权限设为 644)。