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

相关推荐
卡布叻_星星2 小时前
Docker之Nginx前端部署(Windows版-x86_64(AMD64)-离线)
前端·windows·nginx
用户54277848515405 小时前
Nginx 为什么能进行静态资源托管
nginx
草莓熊Lotso5 小时前
C++11 核心精髓:类新功能、lambda与包装器实战
开发语言·c++·人工智能·经验分享·后端·nginx·asp.net
元气满满-樱6 小时前
Rewrite重写
linux·nginx
心动啊1218 小时前
负载均衡 + Nginx的基本使用
学习·nginx·负载均衡
全栈工程师修炼指南10 小时前
Nginx | HTTPS 加密传输:客户端与Nginx服务端 SSL 双向认证实践
运维·网络·nginx·https·ssl
bluechips·zhao10 小时前
中间件及框架漏洞详解(Nginx、Apache、Tomcat、Redis、Zookeeper、RabbitMQ、Kafka等)
nginx·web安全·网络安全·中间件·apache·网络攻击模型·java-rabbitmq
wepe1211 小时前
FlyEnv---phpstudy平替
java·python·mysql·nginx·php
irisart12 小时前
第二章【NGINX 开源功能】—— HTTP 服务器(下)
nginx·http·开源
Evan芙1 天前
搭建nexus服务,实现本地仓库、代理仓库
java·nginx·tomcat