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

相关推荐
Clownseven3 小时前
Nginx反向代理教程:配置多个网站并一键开启HTTPS (Certbot)
运维·nginx·https
苹果醋311 小时前
Deep Dive React 4 How does React State actually work
java·运维·spring boot·mysql·nginx
Forever Nore1 天前
Nginx 学习
运维·学习·nginx
Linux运维技术栈1 天前
解决 Nginx 反代中 proxy_ssl_name 环境变量失效问题:网页能打开但登录失败
运维·nginx·ssl
有追求的开发者2 天前
Nginx 为什么风靡全球?一个人的代码,撑起半个互联网
nginx
苹果醋32 天前
react_05create-react-app脚手架详细解析(export)
java·运维·spring boot·mysql·nginx
欧的曼3 天前
cygwin+php教程(swoole扩展+redis扩展)
开发语言·redis·后端·mysql·nginx·php·swoole
果子⌂4 天前
Zabbix 企业级高级应用
linux·运维·nginx·zabbix
冬夜戏雪4 天前
nginx改配置文件还是会访问默认nginx欢迎页面排查 + 域名访问
css·nginx·css3
星辰云-4 天前
Nginx笔记
运维·笔记·nginx