附件上传提示 413 Request Entity Too Large 如何解决?

15 阅读

概览

在使用 Halo 上传附件时,如果收到 413 Request Entity Too Large 错误,通常不是 Halo 本身的限制,而是前置 Nginx 反向代理对请求体大小的限制所导致的。

原因分析

Nginx 默认的 client_max_body_size1m(1 MB)。当上传的文件超过这个限制时,Nginx 会在文件到达 Halo 之前直接拒绝请求,并返回 HTTP 413 错误。

解决方法

在 Nginx 配置文件对应的 server 节点中添加 client_max_body_size 指令,将限制调整为适合你需求的值。

server {
    listen       80;
    server_name  example.com;
    client_max_body_size 1024m;

    # 其他配置...
}

修改完成后,重新加载 Nginx 配置使其生效:

nginx -s reload

参数说明

参数值

说明

1024m

允许上传最大 1 GB 的文件,可根据实际需求调整

0

不限制上传大小,不建议在公网环境使用

注意事项

  • 修改前建议评估服务器的磁盘空间和带宽,避免因无限制上传导致资源耗尽;

  • 如果使用 Docker 部署且 Nginx 也运行在容器中,需要修改容器内或挂载的 Nginx 配置文件,然后重启容器或执行 reload。


评论