仅在 Azure 应用服务节点应用程序的生产中读取 ECONNRESET 错误(本地主机没问题)

问题描述 投票:0回答:1

我似乎遇到了问题,我不确定下一步该去哪里尝试解决这个问题。

我有一个 Node/express Web 应用程序,它严重依赖于对我们合作伙伴的外部 api 请求。当向一个特定客户端的 API 发出请求时,身份验证和初始请求会起作用,但一旦我尝试向它们上传文件,我的日志上就会出现读取 ECONNRESET 错误。

当我在我的计算机上本地复制此内容时,我没有收到任何错误并且文件上传正确。

为什么这种情况只会发生在我部署的 azure 应用程序服务上而不是本地?

有哪些潜在原因?

蒂亚

我尝试更新应用程序服务中的节点版本,并审核所有 npm 包以查看是否存在问题。

node.js azure web-applications azure-web-app-service
1个回答
0
投票

Azure 中的外部 API 请求将源自与本地测试时不同的公共 IP 地址。

您在 Azure 中可能还具有网络安全机制,例如防火墙和网络安全组。

您应该首先验证您是否能够连接到外部 API 端点。

  1. 打开应用服务的 Kudu 控制台: 在 Web 浏览器中,打开 URL https://
    <yourwebapp>
    .scm.azurewebsites.net
  2. 打开 Kudu 高级工具: 在左侧,选择“开发工具”->“高级工具”。
  3. 打开 PowerShell 会话: 导航到 调试控制台 下拉列表并选择 PowerShell
  4. 测试连接: 运行以下命令,将主机名替换为外部 API 的 FQDN:
    Test-NetConnection -ComputerName <hostname> -Port 443

这将确定 Azure 与外部提供商之间是否存在连接问题。如果连接成功,它将返回值

True
;如果连接被 Azure 网络设置或提供商阻止,则返回
False

一些提供商运营 IP 白名单。我管理着多个平台,在这种情况下,通常需要请求提供商添加另一个 IP。

您可以在 Kudu 中使用 PowerShell 来识别您的提供商可能需要的公共 IP 地址:

(Invoke-RestMethod -Uri "https://api.ipify.org").ip

© www.soinside.com 2019 - 2024. All rights reserved.