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

相关推荐
小天源6 小时前
从 Nginx 日志到访问分析:轻量化网站监测服务的架构实践
jvm·nginx·网络安全·架构·网络监控
幸福清风13 小时前
从域名到一行 nginx 配置:一次站点 HTTPS 证书更换与排障复盘
python·nginx·https
梅梅绵绵冰14 小时前
Nginx反向代理
运维·nginx
2601_965619692 天前
AI视频制作:财经数据可视化视频怎么做:AI 自动生成图表动画的实操流程
人工智能·nginx·音视频
2601_965619692 天前
历史解说视频怎么做:青铜器瓷器文物画面自动对齐的完整教程
运维·nginx·音视频
姜鱼问生2 天前
每次开机手动检查 6 样东西?我写了个 2 秒自检脚本
运维·网络·nginx·docker·容器
xixingzhe23 天前
Nginx 看懂请求耗时瓶颈
服务器·前端·nginx
北风toto3 天前
Windows 下用 OpenSSL 生成 SSL 密钥并配置 Nginx 教程
windows·nginx·ssl
卜锦元4 天前
Docker Compose 部署 Nginx 1.30.6 完整指南
nginx·docker·容器
小小龙学IT4 天前
Nginx 开源 Web 服务器与反向代理深度解
前端·nginx·开源