一、问题详细情况
初次在宝塔下,通过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反而是问题的所在。