server {
  server_name www.example.com;
  client_max_body_size 20m;
  location / {
    client_max_body_size 20m;
    fastcgi_pass unix:/run/php-fpm.sock;
  }
}

后台传一张 8M 的产品图,进度条走完立刻弹出 413,换小图就正常。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,Nginx 默认请求体上限 1M,配置没有在命中的 server 或 location 块里生效,改错文件、漏了重载或后端限制更小都会这样。

这次卡住的地方就在「Nginx 413 上传」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。改完隔一天再看一次,当场正常不代表能稳住。

测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

处理上按这个顺序:确认实际命中的 server 块;在该块与 location 同时设置上限;同步放宽后端与 PHP 限制。

改完只确认一件事:nginx -t 通过后重载,同一张图上传返回 200 且文件完整。

作者 9823189