Railway部署Laravel上传应用遇NGINX 413错误,求设20MB限制
解决Laravel Sail Docker镜像NGINX 413请求实体过大问题(设置20MB上传限制)
你当前的docker-compose.yml存在配置错误:把NGINX的client_max_body_size参数放到了extra_hosts字段下——这个字段仅用于映射主机名,完全不会生效。以下是两种可行的解决方案:
方案一:挂载自定义NGINX配置文件(无需修改Dockerfile)
- 在项目根目录创建配置目录:
mkdir -p docker/nginx/conf.d - 在该目录下新建
upload_limit.conf文件,写入NGINX配置:client_max_body_size 20M; - 修改
docker-compose.yml中laravel.test服务的volumes部分,添加配置文件挂载:volumes: - '.:/var/www/html' - './docker/nginx/conf.d:/etc/nginx/conf.d' # 新增此行 - 重启容器生效:
sail down && sail up -d
方案二:修改Dockerfile内置配置(适合固化镜像的场景)
- 打开
./docker/8.2/Dockerfile,在NGINX安装完成的步骤后,添加以下命令:RUN echo "client_max_body_size 20M;" > /etc/nginx/conf.d/upload_limit.conf - 重新构建镜像并启动容器:
sail build --no-cache sail up -d
同步配置Laravel/PHP的上传限制
仅修改NGINX还不够,PHP自身也有上传大小限制,需要同步调整:
- 打开项目根目录的
.env文件,修改或添加以下变量:UPLOAD_MAX_FILESIZE=20M POST_MAX_SIZE=20M - 重启容器让PHP配置生效。
完成以上步骤后,你的应用即可支持最大20MB的文件上传。
内容的提问来源于stack exchange,提问作者Andrés Romero
相关产品推荐
相关产品推荐

