如何修改Docker环境中Nginx的client_max_body_size参数调整上传大小限制
上传大小限制配置生效方案
1 先修正基础拼写错误
你当前配置的client_max_body_sizecopy 5m存在明显拼写错误,正确指令为client_max_body_size 5m,多余的copy后缀会导致Nginx无法识别该规则,直接忽略配置。
2 Nginx端配置的正确设置方式
你将配置放在/etc/nginx/conf.d/路径下的逻辑是正确的,因为原有nginx.conf的http块已经引入了该目录下所有.conf后缀的文件,只需要注意两个细节:
- 不要直接覆盖原有
default.conf文件:如果你的本地配置没有包含原有站点的完整server块规则,覆盖后会导致原有站点配置失效,建议单独创建一个专用于上传限制的配置文件,比如upload_limit.conf,只写入client_max_body_size 5m;即可,该配置会嵌入http块全局生效。如果需要仅对指定站点/指定接口生效,可以将配置放在对应server块或处理上传请求的location块内。 - 配置修改后需要重载服务生效:如果是运行中的容器,执行
nginx -s reload重载配置;如果是Dockerfile构建阶段修改的配置,需要重新构建镜像并启动新容器才会生效。
你可以进入容器执行nginx -T命令打印所有加载的Nginx配置,确认client_max_body_size指令是否存在且拼写正确。
3 必须同步修改PHP端上传限制
仅修改Nginx配置不会完全生效,php-fpm默认也会限制上传大小,需要修改对应php.ini配置(Alpine镜像下PHP配置路径通常为/etc/php[版本号]/php.ini,比如PHP8.2对应/etc/php82/php.ini),调整两个参数:
; 单个文件最大上传大小 upload_max_filesize = 5M ; POST请求总大小,需要大于等于upload_max_filesize post_max_size = 8M
修改后重启php-fpm服务生效,对应命令为kill -USR2 $(pidof php-fpm[版本号]),比如PHP8.2对应kill -USR2 $(pidof php-fpm82)。
内容的提问来源于stack exchange,提问作者Nice91
相关产品推荐
相关产品推荐

