在宝塔面板下使用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反而是问题的所在。

相关推荐
Insist7539 小时前
linux系统------LVS+KeepAlived+Nginx高可用方案
linux·nginx·lvs
007php00715 小时前
服务器上PHP环境安装与更新版本和扩展(安装PHP、Nginx、Redis、Swoole和OPcache)
运维·服务器·后端·nginx·golang·测试用例·php
core51221 小时前
prometheus+grafana接入nginx实战
nginx·grafana·prometheus·监控·接入·vts·vtx
xian_wwq2 天前
【学习笔记】Nginx常用安全配置
笔记·学习·nginx
不知疲倦的仄仄2 天前
2025Nginx最新版讲解/面试
nginx·代理模式·proxy模式
不要图透2 天前
初用nginx
nginx
启明真纳3 天前
[特殊字符]使用 Nginx 将 HTTP 重定向到 HTTPS
nginx·http·https
潘晓可3 天前
Docker部署Nginx代理多个服务:公网域名与内网IP场景全解
nginx·docker·nginx proxy
✧北辰٩(ˊωˋ*)و南冥✧4 天前
nginx 负载均衡配置(加解决重复登录问题)
运维·nginx·负载均衡