解决使用memos时,上传文件出现的问题
解决在宝塔面板中,使用memos时,上传文件出现的Memos 使用 gRPC 进行通信,而 CORS 配置中没有正确暴露 gRPC 的状态头导致的问题

解决方法:
别用你那个宝塔自带的Docker的应用商店了,里面的应用问题一大堆,版本过老,还有一大堆权限问题,而且还删减设置,很多设置根本没办法可视化的在这个模块里解决,所以,自己去拉最新的镜像,按照官方文件自己重新安装memos就可以解决一大堆问题了。
然后出现的上传图片超时的问题,核心原因包括请求体大小限制不足、代理缓冲区缺失、连接超时 / 缓冲区配置不合理等,在安装完memos后反向代理,在管理中修改的 Nginx 配置文件
关键修改点说明(解决上传失败的核心原因)
修复 WebSocket 变量定义:新增map $http_upgrade $connection_upgrade原配置直接使用$connection_upgrade但未定义,可能导致连接升级异常,间接影响上传请求的稳定性。
新增请求体大小限制:client_max_body_size 100MNginx 默认仅允许 1M 的请求体,图片上传超过这个大小会被截断,导致首次上传失败;设置为 100M 可覆盖绝大多数图片 / 文件上传场景。
禁用上传路径的缓存:proxy_cache off + proxy_no_cache 1原配置定义了缓存目录,但未禁用上传路径的缓存,缓存会导致首次上传的 POST 请求被异常处理,多次上传后缓存生效才成功。
新增代理缓冲区配置:proxy_buffer_size/proxy_buffers等缺少缓冲区时,大文件(图片)上传会因 Nginx 临时写磁盘延迟导致首次请求超时,缓冲区配置可让小文件直接在内存处理,提升稳定性。
延长超时时间:proxy_connect_timeout/proxy_read_timeout等原超时时间较短,首次建立连接 + 上传图片可能触发超时,延长后避免首次请求因网络 / 服务器响应慢失败。
如果不会,可以使用AI来帮你修改。
总结
- 核心问题是请求体大小限制、缓存干扰、超时 / 缓冲区配置不足,修改后从根本上解决了首次上传失败的问题;
client_max_body_size需根据你实际上传的图片大小调整(如不需要 100M,可设为 20M/50M);- 代理缓存对上传类 POST 请求必须禁用,否则会导致请求异常。