在宝塔面板下使用Halo时,上传文件遭遇大小限制的问题解决

一、问题详细情况

初次在宝塔下,通过Halo搭建了一个博客,但在文章内插入视频时,却无法上传100多MB的视频文件,多次尝试均如此。具体情况如下:

根据报错可以知道大概是上传的连接被强行中断了,之后通过Halo的日志功能,将错误的日志导出,如下:

less 复制代码
2025-07-15T03:00:00.009+08:00  INFO 7 --- [scheduling-3023] r.h.a.s.a.r.RememberTokenCleaner         : Expired remember me tokens have been cleaned up.
2025-07-15T23:34:54.172+08:00  WARN 7 --- [run.halo.app.content.stats.TagPostCountUpdater-1] r.h.a.e.controller.DefaultController     : Optimistic locking failure when reconciling request: run.halo.app.content.stats.TagPostCountUpdater-worker-1/PostRelatedTags[postName=5150b8af-ca1a-46ff-9a3f-b1d13ee3dbb3, tags=[c33ceabb-d8f1-4711-8991-bb8f5c92ad7c]]
2025-07-15T23:34:54.191+08:00  WARN 7 --- [run.halo.app.core.reconciler.PostReconciler-1] r.h.a.e.controller.DefaultController     : Optimistic locking failure when reconciling request: run.halo.app.core.reconciler.PostReconciler-worker-1/Request[name=5150b8af-ca1a-46ff-9a3f-b1d13ee3dbb3]
2025-07-15T23:41:42.611+08:00  WARN 7 --- [loomBoundedElastic-34612] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while processing template: post
2025-07-15T23:41:58.712+08:00  WARN 7 --- [loomBoundedElastic-34619] r.h.app.theme.engine.HaloTemplateEngine  : Interrupted while processing template: post

将日志仍给AI工具分析后,查出一个最重要的关联是 HaloTemplateEngine 在处理 post 模板时被中断

二、错误分析

根据网页展示的和日志记录的内容,通过分析可以得出,在上传的过程中采用了POST连接,并且上传任务在处理到一半的时候直接被强制中断了。

后面查看了服务器提供商的后台设置,并未发现有相关的限制,将问题锁定在Halo和宝塔面板中。

经过相关搜索,发现Halo的开源仓库Github中,有一条相关的Issues,如下:

开始的时候默认排除了Nginx的问题,因为服务是通过Docker进行构建的,但是看到这一个Issues的答复,直接进行尝试。

发现的确是Nginx中限制了全站的最大接收文件大小,默认是50MB

三、解决方式

打开宝塔面板Nginx的配置文件,或打开 /usr/local/nginx/conf/nginx.conf 配置文件,将大小修改为自己需要的即可,默认是50MB

修改代码即可,注意要找到全站HTTP的地方下修改,修改示例如下面的代码

ini 复制代码
# 一定要在下面这个HTTP下面修改
http
    {
        include       mime.types;
		#include luawaf.conf;

		include proxy.conf;
        lua_package_path "/www/server/nginx/lib/lua/?.lua;;";

        default_type  application/octet-stream;

        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 512m; #上传文件大小限制 这里修改为512MB

        sendfile   on; #设置为on表示启动高效传输文件的模式
        tcp_nopush on;

        keepalive_timeout 60;

感谢你看到这里,虽然这个问题不大,但从这里可以看到找到问题、解决问题的方式。

通过排除法,逐步缩小范围,同时也要打破认知,不会出问题的Nginx反而是问题的所在。

相关推荐
Csvn2 天前
认识 Nginx
后端·nginx
陈希1232 天前
Nginx 从入门到能扛事:反向代理、负载均衡与 HTTPS 实战
nginx·https·负载均衡
木头左3 天前
【Nginx】内网服务源 IP 白名单实战:动态域名解析放行网段 + 端口接管零改造
运维·nginx·白名单·反向代理
skywalk81633 天前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
没差c3 天前
winsw将jar、nginx等注册为Windows服务
windows·nginx·jar
Lsetea5 天前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书
枫叶轻语7 天前
【Nginx 从入门到实战 09】前后端统一入口:部署页面与接口的完整配置
nginx·全栈
无言听风雨丶7 天前
Nginx 深度实战:从架构原理到生产排错
运维·nginx·架构
xxwl5857 天前
Nginx 基础学习笔记
笔记·学习·nginx
fb_123457 天前
K8s StatefulSet五大有状态集群实战_Nginx_Etcd_Redis_Cassandra_MySQL
nginx·kubernetes·etcd