timeout - Service Fabric 反向代理

标签 timeout reverse-proxy azure-service-fabric gateway

我在正确使用反向代理时遇到问题。当我使用反向代理时,我不断收到“504 Getaway Timeout”消息。

我已关注Microsoft's example设置集群。

恕我直言,我认为集群设置是正确的,唯一的区别是我为代理指定了端口 80,并且我没有在测试环境中使用 SSL。

我目前正在测试环境中尝试,但生产环境正在运行相同的服务,只是没有反向代理,就很好了。另外,我已经在测试环境上公开了其中一项服务的端点,尝试在不使用反向代理的情况下调用它,并且它有效。

我读过could be caused by the containers ,但我使用的是 Windows 2012 RC2 DataCenter。据我所知,它不使用 Windows nat 容器。另外,我读到这可能是由 404 错误(示例文档中的#case 2)引起的,它尝试重新加载它,但尝试超时。

这些是一些可能很重要的总结细节

  • Service Fabric 版本:5.5.219.0
  • 操作系统:Windows
  • SKU:2012-R2-数据中心
  • 服务正在使用 WebListener
  • 允许所有端口
  • 1 NodeType(无状态)
  • 使用 ASP.NET Core Web API 模板创建的服务
  • VS 2015 企业版

服务端点配置如下: 端点协议(protocol) =“http”名称 =“ServiceEndpoint”类型 =“输入”

所有服务和集群都健康。

最佳答案

我已找到此超时的原因。只是我没有在请求网址中进行所需的更改。

我的所有服务都包含以服务名称命名的 MVC Controller 。因此,每当我在没有反向代理的情况下调用它们时,我的请求网址将类似于 http://mycluster.westeurope.cloudapp.azure.com:8280/Notifications/TestMethod

这就足够了,因为它可以通过唯一的端口找到 Controller 。 我一直试图用反向代理调用它的方式是 http://mycluster.westeurope.cloudapp.azure.com/SomeName.API.Services/Notifications/TestMethod

这还不够,因为“通知”被解析为服务的名称,而不是 Controller 的名称。因此,我在不指定 Controller 的情况下调用服务和操作。

正确的调用方法是包含服务名称两次,因为我将 Controller 称为服务(我可能会更改它)。 这是我必须使用的正确网址 http://mycluster.westeurope.cloudapp.azure.com/SomeName.API.Services/Notifications/Notifications/TestMethod

我通过查找 reverse proxy 找到了答案代码示例。

关于timeout - Service Fabric 反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43375113/

相关文章:

php - php-在connection_timeout上返回 header

nginx - 在 heroku 上设置反向代理到 heroku 应用程序

apache - 通过 https 配置 Apache 作为反向代理和 tomcat

node.js - Docker 容器中 Apache 反向代理的最小配置

azure - 了解何时使用有状态服务以及何时依赖 Azure Service Fabric 中的外部持久性

javascript - 如何在 node.js 中的一定持续时间后强制解决 promise ?

javascript - 如何创建一个javascript倒计时,刷新后继续计数

ruby - Timeout::Error 不是在 Ruby 中拯救

visual-studio - 错误: The project output folder is being used by a Service Fabric application

c# - Microsoft Service Fabric 和日志记录