我有一个 NodeJS Express API。 它公开了一个端点,需要多部分表单来收集文件。 它部署在 AKS 实例中。 AKS 位于应用程序网关后面。
客户端正在对上述端点执行多个串行调用。 在某个时刻,在 POST 请求 N of M 时,其中 N < M, it stops receiving an answer, simply timing out. There's no pattern in the failing requests. The application gateway logs (AzureDiagnostics table) display a record with dimension 'httpStatus_d' valued 400 and no 'serverStatus_s' dimension. The API logs display no request, meaning the request is not being forwarded by the application gateway.
我删除了 WAF_v2 并将 AGW 重新部署为 Standard_v2 层(没有 WAF,因此此时任何策略都不应阻止请求),但仍然遇到该问题。
我做了所有我能想到的实验,但没有找到解决方案。 这只是为了了解 AGW 发生了什么......
客户端未收到来自应用程序网关的响应超时并收集 400 httpStatus
一般来说,客户端配置也可能发生此类问题。检查您的 NodeJS API 是否在 AKS 集群中正确扩展。
我们可以在您的应用程序网关上调整此
maxRequestBodySize
,以使用 AzureCLI 处理更大的文件上传。
az network application-gateway http-settings update \
--gateway-name myAppGateway \
--resource-group myResourceGroup \
--name appGatewayBackendHttpSettings \
--max-request-body-size 10485760 # For 10MB
我们必须确保 AGW 上的客户端请求和超时以及后端超时设置将有助于实现此目标。
az network application-gateway http-settings update \
--gateway-name myAppGateway \
--resource-group myResourceGroup \
--name appGatewayBackendHttpSettings \
--timeout 180 # Increase to 3 minutes, or adjust as needed
参考:
客户端未收到应用程序网关的响应超时并收集 400 httpStatus - Microsoft 问答由 Sina Salam 回答