You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过IIS代理向Node.js HTTPS服务器发送大文件时偶现Error 400.6错误的原因排查求助

排查IIS ARR代理返回400.6错误的可能原因

我之前处理过类似的ARR代理大文件分片传输的问题,结合你的环境(Windows Server 2019 + IIS 10 + ARR 3.0 + Node.js 14.17.6 LTS),下面几个方向可以重点排查:

  • ARR专属的请求实体大小限制
    虽然你已经调整了IIS层面的请求大小参数,但ARR本身有独立的maxRequestEntityAllowed配置项,默认值可能不足以容纳50MB的Blob分片。你需要打开C:\Windows\System32\inetsrv\config\applicationHost.config,找到<system.webServer><proxy>节点,检查是否存在该配置。如果没有,添加maxRequestEntityAllowed="67108864"(对应64MB,比你的分片大小留有余量),保存后重启IIS服务。

  • Node.js后端的请求处理异常
    有时候400.6错误的根源不在IIS,而是Node.js服务器提前中断了连接。比如:

    • 如果你用Express框架,body-parser中间件的limit参数是否设置为大于50MB?建议设为limit: '60mb'确保覆盖分片大小;
    • Node.js的server.timeout默认是2分钟,如果网络波动导致某个分片传输超时,后端会主动关闭连接,引发IIS返回错误。可以在Node.js代码中设置server.timeout = 300000(5分钟)或者0(禁用超时);
    • 检查Node.js的错误日志,看是否有ECONNRESET、请求解析失败等相关记录,这能帮你定位具体的后端问题。
  • ARR连接池的复用问题
    ARR默认会复用与后端Node.js的TCP连接,如果某个复用的连接处于半开状态或之前的请求有异常,传输当前分片时就可能出错。你可以尝试调整ARR的连接池设置:

    1. 打开IIS管理器,进入ARR的「服务器代理设置」;
    2. 切换到「连接池」标签,降低「最大空闲连接数」,或者缩短「连接空闲超时」时间,让ARR及时回收异常连接;
    3. 临时勾选「禁用连接池」进行测试,如果错误不再出现,说明连接池复用是问题根源,再逐步优化参数。
  • SSL/TLS层的兼容性问题
    因为全程使用HTTPS,SSL/TLS握手或传输异常也可能引发400.6错误:

    • 确保IIS和Node.js服务器启用相同的TLS版本(建议同时启用TLS 1.2和TLS 1.3);
    • 检查ARR代理设置中的「SSL设置」,如果开启了「验证后端服务器证书」,确认Node.js的证书有效且被IIS信任;
    • 查看Windows事件查看器中的IIS日志和ARR日志,有没有SSL相关的错误提示。
  • 动态内容压缩的干扰
    如果IIS开启了动态内容压缩,处理大分片请求时,压缩过程可能因CPU占用过高或异常中断导致错误。你可以临时关闭动态内容压缩测试:

    1. 在IIS管理器中打开网站的「压缩」功能;
    2. 取消勾选「启用动态内容压缩」,重启网站后观察错误是否消失;
    3. 如果问题解决,再调整压缩的CPU阈值参数(dynamicCompressionEnableCpuUsage和dynamicCompressionDisableCpuUsage),避免高负载时压缩出错。
  • 网络层面的偶发波动
    每30次出现一次的概率,可能是网络偶尔丢包或延迟过高导致分片传输不完整。可以用Wireshark在IIS服务器上抓包,当错误出现时,检查对应的请求包是否完整、有无重传或丢包记录;同时检查服务器网卡驱动是否需要更新,以及网络设备(如交换机)的日志是否有异常。

内容的提问来源于stack exchange,提问作者omer faruk kalkan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 14:22:44