NAS用FRP通过1Panel OpenResty反代大文件上传失败的解决方法

NAS用FRP通过1Panel OpenResty反代大文件上传失败的解决方法

_

适用场景:使用 FRP 进行内网穿透,1Panel 面板,经过 VPS 端的 OpenResty 反向代理访问 NAS,遇到“下载正常,上传小文件正常,大文件(>1MB)上传秒失败”的问题。


1. 问题现象

  • 正常情况:外网下载文件正常,使用 https://IP: 端口 直连上传正常。

  • 异常情况:使用 https:// 域名 访问时,上传超过 1MB 的文件,点击上传几秒后直接提示“失败”或连接中断。

  • 根本原因:VPS 端的 OpenResty 默认开启了请求缓冲 (Buffering),且限制了上传包体大小。在 FRP 带宽受限的环境下,缓冲写入慢导致超时断开。


2. 解决方案(修改 VPS 端 OpenResty 配置)

这是解决问题的核心步骤。请登录 VPS 或服务器 1Panel 管理面板。

2.1 修改位置

找到您的站点配置文件(位于 网站 / 您的域名 / 配置文件 )。
在 server {...} 区块中,SSL 配置下方,反代规则上方,插入以下配置。

2.2 核心配置代码

    # =========================================================
    # ▼▼▼ 解决大文件上传失败的核心配置 ▼▼▼
    # =========================================================

    # 1. 解除上传文件大小限制 (0 表示无限制)
    # 默认仅 1M,必须修改,否则大文件直接报 413 错误
    client_max_body_size 0;

    # 2. 关闭请求缓冲 (关键修复!)
    # 让数据流直接流向后端,不写入 VPS 临时文件,防止因写入慢导致超时
    proxy_request_buffering off;
    
    # 3. 关闭响应缓冲
    # 加快传输响应,减少延迟
    proxy_buffering off;

    # 4. 延长超时时间
    # 防止大文件传输时间过长导致 Nginx 主动切断连接
    proxy_connect_timeout 300s;
    proxy_read_timeout 300s;
    proxy_send_timeout 300s;

    # =========================================================
    # ▲▲▲ 插入结束 ▲▲▲
    # =========================================================

2.3 完整配置参考

server {
    listen 443 ssl;
    server_name nas.yourdomain.com;
    
    # SSL 配置
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # --- 插入优化配置 ---
    client_max_body_size 0;
    proxy_request_buffering off;
    proxy_buffering off;
    proxy_send_timeout 300s;
    # ------------------

    # 引用反代规则 (例如面板生成的规则)
    include /www/sites/yourdomain.com/proxy/*.conf; 
}

2.4 生效配置

修改完成后,请务必保存并重载 OpenResty:

  • 命令行:nginx -s reload

  • 面板:点击“重启 OpenResty”或“重载配置”。


3. 附录:FRP 客户端配置建议

虽然问题主要解决在 OpenResty 端,但为了稳定性,建议 frpc.toml 使用以下配置:

[transport]
# 建议开启 TLS 防止运营商干扰
tls.enable = true
# 适当增加心跳容错
heartbeatInterval = 30
heartbeatTimeout = 120


4. 防坑指南 (重要)

  • 面板覆盖风险:如果您使用的是 1Panel、宝塔等面板,在 UI 界面修改“反向代理”或“SSL”设置并点击保存时,面板可能会重写配置文件,导致上述代码丢失。

  • 维护建议:如果未来再次出现上传秒失败的问题,请第一时间检查配置文件中 proxy_request_buffering off; 是否被还原。

FRP 双向证书验证 (mTLS) 完整教程 2025-12-29
PotPlayer 杜比视界紫绿屏修复 2025-12-30

评论区

© 2026 自用杂记